HTTP协议控制浏览器缓存 浏览器
2015.01.25 SilenceHurts 缓存
当咱们浏览网站的图片时,按下F12监控,很容易就发现,当咱们第一次浏览该图片时,浏览器返回的代码是200,即请求正常,此时,不懂任何东西,咱们按下F5刷新页面,注意,咱们会发现监控下的代码返回再也不是200,而是现实304 Not Modifid,即未修改。 服务器
缘由:第一次咱们访问图片时,是正常的,而第二次访问时现实304,由于此时咱们浏览器发现页面未发生更改,此时使用的是本地的缓存,而并不是服务器返回的代码,加快了速度。 网站
设置服务器缓存 spa
若某网站有N台缓存服务器,其与主机服务器键使用HTTP协议的cache-control来控制哪些东西该缓存,哪些东西不须要缓存. rest
具体用法: blog
1.打开Apache服务器的mod_expires.so模块 生命周期
LoadModule expires_module modules/mod_expires.so 图片
重启服务器 httpd –k restart io
2.在须要设在缓存的目录中创建 .htaccess文件
而且添加: 如图 第7,8两行
ExpiresActive On //开启缓存
ExpiresByType image/png "access plus 30 seconds" //针对png图片,缓存生命周期30s
基本语法:
ExpiresDefault "<base> [plus] { <num> <type>}"
ExpiresByType type/encoding "<base> [plus] { <num> <type>}"
参数:
base: 设置基于哪一个时间来了计算缓存日期
Access / now :基于服务器现行的那一瞬间来开始计算缓存日期
Modifications: 基于被修改的最后一个日期开始计算缓存日期
<type>: 缓存日期计算单位 如:seconds ,minutes, days, weeks 等
设置服务器无缓存
使用 头信息Control-cache : no-store,must-revalidate
告诉浏览器该页面不容许缓存,必须去主服务器验证,好比验证码或者一些比较私密的信息等
具体用法:
1.在http.conf中开启mod_header.so模块
重启服务器 Http –k restart
2.在要设置无缓存的目录添加.htaccess文件
ExpiresActive On
ExpiresByType image/png "access plus 30 seconds"
<FilesMatch "\.(png|gif)$"> //若是是PNG 图片 或者 gif 图片则不缓存
header set Cache-control "no-store,must-revalidate"
</FilesMatch>
同时也能够加入下面两属性来控制图片的不缓存:
header unset Etag //来设置不设置 图片签名 Etag
header unset Last-Modified
到此时,当咱们设置好不缓存,咱们浏览图片时,即使是同一张图片,咱们也一直刷新也显示的是200,再也不是显示304了