
设置响应请求头为 Cache-Control: no-cache,max-age=0
保证了html不缓存,这样资源文件只需要在后面拼接时间戳或者版本号就能实现该缓存时缓存,页面更新时保证更新
cache的路径和容量在浏览器设置的,和html无关,html最多请求要不要缓存cache-control:||no-cache||no-store||max-age
1.no-cache:
表面意为“数据内容不被缓存”,而实际数据是被缓存到本地的,只是每次请求时候直接绕过缓存这一环节直接向服务器请求最新资源,由于浏览器解释不一样,
例如ie中我们设置了no-cache之后,请求虽然不会直接使用缓存,但是还会用缓存数据与服务器数据进行一致性检测(也就是说还是有几率会用到缓存的),
firefox中则完全无视no-cache存在,详细解释见no-store
2.no-store:
指示缓存不存储此次请求的响应部分。与no-cache比较来说,一个是不用缓存,一个是不存储缓存按理来说这个设置更加粗暴直接禁用缓存,
但是具体实现起来 浏览器之间差异却特别大,一般不会直接用该字段进行设置,不过no-store是为了防止缓存被恶意修改存储路径导致信息被泄露而设置的,
毕竟有它的用处,在firefox中实现缓存是通过文件另存为将缓存副本保存到本地,直接利用no-cache对其是无效的,如果加上no-store设置的话 则可以起到与no-cache一样的效果
即:cache-control:no-cache,no-store可以确保在支持http1.1版本中各大浏览器回车后退刷新无缓存;
再加上Pragma: no-cache设置兼容版本1.0即可(不过为了防止一致性检测时候的万一我们还是最好加上一致性检测的内容,如下所示几种方式);
3.max-age:
例如Cache-control: max-age=3;表示此次请求成功后3秒之内发送同样请求不会去服务器重新请求,而是使用本地缓存;同样我们如果设置max-age=0表示立即抛弃缓存直接发送请求到服务器
根据服务器系统环节的不同设置方法不一样
1、在Apache环境下
可以通过在.htaccess文件中添加下面的代码,设置图片的HTTP缓存和有效期(需要开启apache的headers模块支持):
# Image and Flash content Caching for ONE Year blog.gimhoy.com<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf)$"> Header set Cache-Control "max-age=3156000"其中max-age后面这个数字就是设置的缓存有效期(以秒为单位),比如上面的代码设置了网站的图片使用为期一年(3156000秒)的HTTP缓存。
2、在Nginx下
可以通过修改nginx.conf配置文件,来修改缓存设置:
location ~* \.(flv|gif|jpg|jpeg|png|ico|swf)$ { expires 1yaccess_log offbreak}
注意:同样的方法,可以给js和css文件设置缓存。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)