http协议之缓存 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    http协议缓存控制第一次请求时200 ok 第二次请求304 not modified 为修改状态

    解释: 在网络上有一些缓存服务器,另外浏览器自身也有缓存功能,

http协议之缓存

。 当我们第一次访问某个图片的时候,正常下载图片返回200 ok 基于一个前提-图片不会经常改动,服务器在返回200的时候,还返回该图片的”签名“ -- etag (签名可以理解为图片的“指纹”) 当浏览器再次访问该图片时,去服务器校验“指纹” 如果图片没有变化,直接使用缓存中的图片,这样减轻了服务器负担

    抓包观察:第一次请求:第一次响应头: 在响应头里面可以看到请求的图片信息 etag:"321397979879-fndlsh32yfsh894392" last-modified: Tue, 10 Jun 2018 12:12:12 GMT

    第二次请求头:第二次请求头里面: if-modified-since: Tue, 10 Jun 2018 12:12:12 GMT 如果自Tue, 10 Jun 2018 12:12:12 GMT这个时间后图片没有修改则不会重新请求,如果有修改则会重新请求 if-none-match: "321397979879-fndlsh32yfsh894392" 如果该图片最新的etag值 和 if-none-match 的值不匹配,则重新请求

    第二次响应头: status code 304 not modified 如果是304就以为这浏览器从本地的缓存中取数据,节省了图片在网络上传输的时间

    大网站的缓存:如果网站比较大,有N台缓存服务器,那么这N台缓存服务器如何处理主服务器上的文件? 要不要缓存? 如果缓存该缓存多久呢? 缓存服务器与主服务器之间应该有一些协议,来说明这2个问题用什么协议来说明这两个问题?答:还是http协议,用头信息,cache-control 来控制

    利用协议控制缓存(apache服务器):利用协议控制缓存:相关模块是---mod_expiresExpiresActive On ExpiresByType image/jpeg 'access plus 1 month' 控制是否缓存以及缓存周期

    在.htaccess中,具体语法如下: ExpiresDefault " [plus] { }*" ExpiresByType type/encoding " [plus] { }*" ExpiresDefault 是设置默认的缓存参数 ExpiresByType 是按照文件类型来设计独特的缓存参数 我们用第二种来做测试给jpg图片设置一个月的生存周期 后面4个参数怎么理解? Base: 基于哪个时间点来计算缓存有效期 Access/now: 基于请求响应的那一瞬间,比如从此瞬间到一个月之后 Modification: 基于被请求文件的最后修改日期来计算,比如最后修改日期的后一周内仍然有效

    num: 缓存时间的大小 (30) type: 缓存时间的单位 (天) 实例:如果这是在集群环境里,缓存服务器得到此图片,将会认为一个月内有效,从而减轻了主服务器的负担

    利用协议取消缓存(apache服务器):如果有些信息不要缓存,必须要去主服务器获取,那么要这样客户端: Cache-Control:no-cache Pragma:no-cache

    服务器端清除缓存:相关模块是:mod_header Cache-Control:no-cache Header unset Etag Header unset Last-Modified

    revalidate:使重新生效,使从新有法律效力

最新文章