当前位置:首页 » 文件管理 » 缓存控制

缓存控制

发布时间: 2022-02-21 19:22:24

‘壹’ Http协议中,用于控制缓存的Header有哪些并简要说明

  • Last-Modified(服务器响应) 和 If-Modified-Since(浏览器请求)

  • ETag(服务器) 和 If-None-Match(浏览器)

  • Expires(服务器响应传递,格林威治格式的一个具体的时间点)

  • Cache-Control(服务器建议的缓存策略)

    max-age:时间长度。(浏览器和共享高速缓存缓存有效的时长)

    s-maxage: 时间长度。共享高速缓存的缓存有效时长(浏览器不进行缓存)

    no-cache:浏览器不从缓存读取,必须请求服务器。

    no-store:不缓存任何请求和响应信息。

    public:对任何缓存媒介都可缓存该响应。

    private:只允许个体客户端缓存,不允许共享高速缓存。

可以看这篇文章:网页链接

‘贰’ servlet怎么控制页面缓存

Html页面中的HTTP头信息中有着控制页面缓存的设置,包括浏览器端,中间缓存服务器端,web服务器端;

本文讨论头信息中带缓存控制信息的HTML页面(JSP/Servlet生成好出来的也是HTML页面)在中间缓存服务器中的缓存情况。
HTTP协议中关于缓存的信息头关键字包括Cache-Control(HTTP1.1),Pragma(HTTP1.0),last-Modified,Expires等。
HTTP1.0中通过Pragma 控制页面缓存,可以设置:Pragma或no-cache。网上有非常多的文章说明如何控制不让浏览器或中间缓存服务器缓存页面,通常设置的值为no- cache,不过这个值不这么保险,通常还加上Expires置为0来达到目的。但是如我们刻意需要浏览器或缓存服务器缓存住我们的页面这个值则要设置为 Pragma。
HTTP1.1中启用Cache-Control 来控制页面的缓存与否,这里介绍几个常用的参数:
no-cache,浏览器和缓存服务器都不应该缓存页面信息;
public,浏览器和缓存服务器都可以缓存页面信息;
no-store,请求和响应的信息都不应该被存储在对方的磁盘系统中;
must-revalidate,对于客户机的每次请求,代理服务器必须想服务器验证缓存是否过时;
max-age=xxx,s-max-age=xxx,替代Expires,表示应该在xxx秒后认为页面过时,后者指示代理服务器中缓存(通常称为共享缓存)的页面过期时间。(不过我试了好多次,这个选项一直没法实现,希望有人能补充!)
通常我们不需要缓存页面时设置该值为"no-cache,no-store,must-revalidate"(分三行代码设置);需要缓存页面信息时则设置该值为"public,max-age,s-max-age"。
Last-Modified只页面的最后生成时间,GMT格式;
Expires过时期限值,GMT格式,指浏览器或缓存服务器在该时间点后必须从真正的服务器中获取新的页面信息;
上面两个值在JSP中设置值为字符型的GMT格式,无法生效,设置long类型才生效;
最后来看一下JSP或Servlet中如何设置缓存控制信息的代码:
java代码
//本页面允许在浏览器端或缓存服务器中缓存,时限为10秒。
java.util.Date date = new java.util.Date();
response.setDateHeader("Last-Modified",date.getTime());
response.setDateHeader("Expires",date.getTime()+10000);

response.setHeader("Cache-Control", "public");
response.setHeader("Pragma", "Pragma");
Java代码
//不允许浏览器端或缓存服务器缓存当前页面信息。
response.setHeader( "Pragma", "no-cache" );
response.setDateHeader("Expires", 0);

response.addHeader( "Cache-Control", "no-cache" );
response.addHeader( "Cache-Control", "no-store" );
response.addHeader( "Cache-Control", "must-revalidate" );
如果HTML页面信息中包括了Expires头信息,则其相关的缓存机制不再处理该页面,而是安装页面的缓存控制要求来处理。所以做了上述工作后,Squid无需做任何配置上的修改(指Squid的refresh_pattern指令不处理这些页面 )。

‘叁’ 内存控制器和CPU的缓存在作用上有什么本质的区别吗不什么要“既生瑜何生亮呢“”

在CPU前端总线和外频相同的时代,CPU把数据存放在内存的速度是足够的 但到了现在内存的速度不能满足CPU的需求了,所以设计了高速缓存,而内存控制器的出现使得在AMD平台式单通道和双通道的性能几乎相同

‘肆’ 如何让php对页面的缓存进行控制 php处理请求的浏览器缓存处理

只要服务器端设计严谨,你再怎么在客户端搞也没意义。
页面过期是设置的http header,要想修改header那你得想法截获 http 数据通信的包,修改完了再恢复http对话,难度可不小。
而且设计者一般都在提交之后肯定就设定某个标记指明这次测试结束了,你即便能再次提交,肯定也会出现错误的,当然,不排除设计者是巨笨的那种情况。

‘伍’ http 协议中可以控制缓存的有哪些

客户端请求headers包含了请求行和一些头域。 各种头域:这些头域都是有关键字和键值成对组合,最后换行回车(\r\n)结束,这些头域告诉服务器应该怎么去响应以及本身一些信息。 服务器响应 状态行:协议版本 响应状态 状态描述 ------这三者用空格

‘陆’ QQ音乐缓存如何控制

扣扣音乐的缓存是不能存电脑的,它的缓存只能用扣扣听。可以更改缓存地址,在扣扣设置里。你进去仔细看。缓存需要自己动手清理,否则占用内存。有360之类的清理缓存之类也能清理。

‘柒’ HTTP协议中可以控制缓存的有哪些

通过响应来控制缓存,在响应头中主要有cache-control、pragma、expires三个响应头,其中expires是HTTP1.0中的响应头,后面直接跟一个缓存失效日期,但是服务器和客户端之间的时钟往往不同,因此通过该响应头来控制缓存失效时间不准确,一般不用,如果要设置客户端不缓存,则设置响应头“expires: -1”即可;pragema是HTTP1.1协议为了兼容HTTP1.0+协议,用来控制不缓存,“pragma: no-cache";cache-control是HTTP1.1中的响应头,其参数为相对的秒值,即过多少秒缓存失效,因此建议使用该响应头来控制缓存失效时间,其后可以跟的内容有no-cache、no-store、max-age、must-revalidate
为了兼容各个协议版本,要想客户端不缓存资源,一般都添加三个响应头:cache-control: no-cache、pragma: no-cache、expires: -1
注意:cache-control: no-cache控制缓存,客户端是会缓存资源的,只是在于原始服务器进行再验证之前不会想客户端提供资源,也就是资源新鲜度永远过期,这样比直接访问服务器节省了资源在网络中的传输成本,相比开启缓存增加了再验证的成本,性能失效介于两者之间;要想客户端缓存不从响应中拷贝资源副本,则应该使用cache-control: no-store,使用该响应头内容也可以让缓存立即删除已经拷贝的副本;而must-revalidate是服务器希望缓存能严格遵守过期信息,一般情况下类似no-cache,但在缓存与原始服务器进行新鲜度验证的时候,原始服务器不可用,这将会导致这一段时间中访问该资源会504 gateway timeout,因此建议使用no-cache

‘捌’ 如何控制Linux清理cache机制

Linux下的缓存机制及清理buffer/cache/swap的方法梳理

(1)缓存机制
为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果没有则通过驱动程序直接操作磁盘。
缓存机制优点:减少系统调用次数,降低CPU上下文切换和磁盘访问频率。
CPU上下文切换:CPU给每个进程一定的服务时间,当时间片用完后,内核从正在运行的进程中收回处理器,同时把进程当前运行状态保存下来,然后加载下一个任务,这个过程叫做上下文切换。实质上就是被终止运行进程与待运行进程的进程切换。
(2)查看缓存区及内存使用情况
[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 7866 7725 141 19 74 6897
-/+ buffers/cache: 752 7113
Swap: 16382 32 16350
可以看到内存总共8G,已使用7725M,剩余141M,不少的人都是这么看的,这样并不能作为实际的使用率。因为有了缓存机制,具体该怎么算呢?
空闲内存=free(141)+buffers(74)+cached(6897)
已用内存=total(7866)-空闲内存
由此算出空闲内存是7112M,已用内存754M,这才是真正的使用率,也可参考-/+ buffers/cache这行信息也是内存正确使用率。
(3)可见缓存区分为buffers和cached,他们有什么区别呢?
内核在保证系统能正常使用物理内存和数据量读写情况下来分配缓冲区大小。buffers用来缓存metadata及pages,可以理解为系统缓存,例如,vi打开一个文件。cached是用来给文件做缓存,可以理解为数据块缓存,例如,dd if=/dev/zero of=/tmp/test count=1 bs=1G 测试写入一个文件,就会被缓存到缓冲区中,当下一次再执行这个测试命令时,写入速度会明显很快。
(4)随便说下Swap做什么用的呢?
Swap意思是交换分区,通常我们说的虚拟内存,是从硬盘中划分出的一个分区。当物理内存不够用的时候,内核就会释放缓存区(buffers/cache)里一些长时间不用的程序,然后将这些程序临时放到Swap中,也就是说如果物理内存和缓存区内存不够用的时候,才会用到Swap。
swap清理:
swapoff -a && swapon -a
注意:这样清理有个前提条件,空闲的内存必须比已经使用的swap空间大
(5)怎样释放缓存区内存呢?
a)直接改变内核运行参数
#释放pagecache
echo 1 >/proc/sys/vm/drop_caches
#释放dentries和inodes
echo 2 >/proc/sys/vm/drop_caches
#释放pagecache、dentries和inodes
echo 3 >/proc/sys/vm/drop_caches
b)也可以使用sysctl重置内核运行参数
sysctl -w vm.drop_caches=3
注意:这两个方式都是临时生效,永久生效需添加sysctl.conf文件中,一般写成脚本手动清理,建议不要清理。
修改/etc/sysctl.conf 添加如下选项后就不会内存持续增加
vm.dirty_ratio = 1
vm.dirty_background_ratio=1
vm.dirty_writeback_centisecs=2
vm.dirty_expire_centisecs=3
vm.drop_caches=3
vm.swappiness =100
vm.vfs_cache_pressure=163
vm.overcommit_memory=2
vm.lowmem_reserve_ratio=32 32 8
kern.maxvnodes=3
上面的设置比较粗暴,使cache的作用基本无法发挥。需要根据机器的状况进行适当的调节寻找最佳的折衷。

‘玖’ 缓存的作用是什么

缓存的作用:

1、预读取

当硬盘受到CPU指令控制开始读取数据时,硬盘上的控制芯片会控制磁头把正在读取的簇的下一个或者几个簇中的数据读到缓存中(由于硬盘上数据存储时是比较连续的,所以读取命中率较高),当需要读取下一个或者几个簇中的数据的时候。

硬盘则不需要再次读取数据,直接把缓存中的数据传输到内存中就可以了,由于缓存的速率远远高于磁头读写的速率,所以能够达到明显改善性能的目的。

2、写入

当硬盘接到写入数据的指令之后,并不会马上将数据写入到盘片上,而是先暂时存储在缓存里,然后发送一个“数据已写入”的信号给系统,这时系统就会认为数据已经写入,并继续执行下面的工作,而硬盘则在空闲(不进行读取或写入的时候)时再将缓存中的数据写入到盘片上。

3、临时存储

有时候,某些数据是会经常需要访问的,像硬盘内部的缓存(暂存器的一种)会将读取比较频繁的一些数据存储在缓存中,再次读取时就可以直接从缓存中直接传输。

(9)缓存控制扩展阅读:

缓存分类:

1、静态缓存:是在新内容发布的同时就立刻生成相应内容的静态页面,比如:2003年3月22日,管理员通过后台内容管理界面录入一篇文章后,并同步更新相关索引页上的链接。

2、动态缓存:是在新内容发布以后,并不预先生成相应的静态页面,直到对相应内容发出请求时,如果前台缓存服务器找不到相应缓存,就向后台内容管理服务器发出请求,后台系统会生成相应内容的静态页面,用户第一次访问页面时可能会慢一点,但是以后就是直接访问缓存了。

热点内容
修改手机广讯通服务器地址 发布:2024-10-26 22:23:04 浏览:325
鸿蒙系统看存储分布 发布:2024-10-26 22:18:50 浏览:795
libzip压缩解压 发布:2024-10-26 22:13:20 浏览:577
云服务器优势硬件资源隔离 发布:2024-10-26 22:02:23 浏览:846
jdk源码包 发布:2024-10-26 22:02:21 浏览:560
如何在dns里面新建一个服务器 发布:2024-10-26 21:49:36 浏览:875
万宝广州压缩机有限公司 发布:2024-10-26 21:45:46 浏览:221
python赋值函数 发布:2024-10-26 21:35:26 浏览:950
微信指纹支付多少钱要用密码 发布:2024-10-26 20:56:04 浏览:808
flash游戏反编译 发布:2024-10-26 20:43:59 浏览:711