HTTP缓存控制 总结

  

一、HTTP响应头、请求头中与缓存控制的相关字段

二、一个页面访问缓存的流程

三、三种刷新的实际操作

四、如何设置缓存

一、HTTP响应头、请求头中与缓存控制的相关字段

  浏览器向服务器发起请求后,服务器的响应头中一般会包含以下与缓存相关的字段:

  1.Expires:过期时间。(HTTP 1.0的字段)

  浏览器再次发起请求的时候会先检查是否超过这个时间,如果没超过则直接从缓存中读取信息。但是如果浏览器的时间和服务器的时间不一致,就会出现问题。

  2.Cache-control:max-age=6000(毫秒)/no-cache/no-store/private/public (HTTP 1.1的字段)

  同时设置Expires和max-age的情况下,使用max-age

  3.Last-Modified:最后一次修改时间。

  4.Etag:被请求变量的实体标记。它的计算是通过服务器端的算法得来的,优先级高于Last-Modified。

  浏览器再次向服务器发起请求,请求头中一般会包含以下与缓存相关的字段:

  1.Cache-control:max-age=0

  2.If-Modified-Since:把响应头中的Last-Modified发至服务端与被请求资源的最后修改时间进行对比

   若最后修改时间大于If-Modified-Since,则表明资源已更改,响应整个资源返回200,否则返回304。

  3.If-None-Match:把响应头中的Etag发至服务端与服务端的实体标记进行对比

   若相同,则表明资源未更改返回304,否则响应整个资源返回200。

  (Etag/If-None-Match的优先级高于Last-Modified/If-Modified-Since)

二、一个页面访问缓存的流程

  

三、三种刷新的实际操作

  1.输入URL,按回车:浏览器发现缓存中有这个资源,就直接从缓存中拿。

  2.F5:即使缓存中有这个资源,也会去服务器确认该资源是否更改。

  3.Ctrl+F5:先把缓存中的资源删了,再去服务器请求完整的资源文件。

四、如何设置缓存

  1.配置apache或ngix服务器(不太了解该方式)

  2.在服务器响应头中动态设置

  3.在前端HTML页面的Meta标签中设置(该方法并不是所有浏览器都支持,且代理服务器不支持该方法,因为代理服务器不会解析HTML页面)

  <meta http-equiv="cache-control" content="max-age=600000" />

  <meta http-equiv="expires" content="..." />

  4.在请求中用setRequestHeader()方法设置请求头,可设置不使用缓存或者更改相应字段(如设置If-None-Modified等)

  (此文为个人对缓存控制的一些梳理,欢迎大家共同交流学习~)

时间: 2024-10-05 04:55:13

HTTP缓存控制 总结的相关文章

HTTP缓存控制小结

引言 通过网络获取内容既缓慢,成本又高:大的响应需要在客户端和服务器之间进行多次往返通信,这拖延了浏览器可以使用和处理内容的时间,同时也增加了访问者的数据成本.因此,缓存和重用以前获取的资源的能力成为优化性能很关键的一个方面. 序 本文用于解决以下六个疑问. 与缓存相关的HTTP首部字段主要 有哪些 ? 这些HTTP首部字段之间的 联系与区别 ? HTTP缓存首部字段的 优先级 ? HTTP缓存首部字段的 特点与局限性 ? 用户 不同的页面刷新行为的差别 ? 在 实践中 我们该用哪些报文头来 控

浏览器的缓存控制

浏览器第一次向服务器请求资源时,服务器会发送完整的文件,并且在发送文件时还附带一些额外信息--比如过期时间:Expires:Mon,10 Dec 1999  02:25:22GMT.浏览器可以把这个额外信息保存在本地(缓存). 浏览器在请求已经访问过的URL时,会判断是否使用缓存,而浏览器的缓存控制分为强缓存和协商缓存:协商缓存必须配合强缓存使用. 浏览器的第一次缓存: 首先浏览器第一次跟服务器请求一个资源,服务器在返回这个资源和response header的同时,会根据开发者要求或者浏览器默

浏览器缓存控制

浏览器缓存控制 Last-Modified/ If-Modified-Since 在浏览器第一次请求某一个URL时,服务器端的返回状态码200,内容是客户端请求的资源,同时有一个Last-Modified的属性标记此文件在服务器端最后被修改的时间. Last-Modified格式类似这样:Last-Modified : Fri , 12 May 2006 18:53:33 GMT 客户端第二次请求此URL时,根据HTTP协议的规定,浏览器会向服务器传送If-Modified-Since报头,询问

06 HTTP协议缓存控制

一:HTTP协议缓存控制 第1次请求时 200 ok 第2次请求时 304 Not Modified 未修改状态 解释: 在网络上,有一些缓存服务器,另, 浏览器自身也有缓存功能. 当我们第一次某图片时,正常下载图片,返回值200 基于一个前提--图片不会经常改动, 服务器在返回200的同时,还返回该图片的”签名”-- Etag  ,(签名可以理解图片的”指纹”). 当浏览再次访问该图片时,去服务器校验”指纹”, 如果图片没有变化,直接使用缓存中的图片,这样减轻了服务器负担. 二:抓包观察分析

基于maven插件的缓存控制插件

asset-cache-control github源码及下载地址: https://github.com/StruggleBird/asset-cache-control 基于maven插件的缓存控制工具,通过修改资源url的请求参数,比如在url后面添加版本号或者时间戳的形式,来有效的防止浏览器缓存. 目前该功能可用于避免js.css.image 三种文件类型缓存 用法: 1.添加插件asset-cache-control 到pom文件中: <build> <plugins>

php输出缓存控制

一.为什么学习php 输出缓存控制(Output Control)? 答:当然是php 输出缓存控制可以帮我们完成想完成的事情了.那就要从什么是输出缓存控制开始来了解了? 二.什么是php 输出缓存控制(Output Control) 答:由于输出php类似echo输出的时候,首先输出到php buffer里面的.所以我们可以控制这个缓存里面的数据了.当我们echo输出到浏览器的时候,要经历四个步骤:php buffer ----> web server buffer ---->browser

缓存控制

注:下面提到一些关于缓存控制的一些特殊情况: 1.对于一般的页面跳转(如超链接点击跳转.通过js调用window.open打开新页面都是会使用浏览器缓存的,在未过期情况下会直接使用浏览器缓存的副本,在未过期情况下一次请求也不发送): 2.对于刷新页面(如按F5键刷新),会再次发送一次请求到服务器的: 客户端强制缓存过期: (1.可以按ctrl+F5强制刷新(会添加请求头 HTTP1.0 Pragma:no-cache和 HTTP1.1 Cache-Control:no-cache.If-Modi

mysql中链接参数、文件参数、缓存控制参数

一 连接参数: 二 文件参数相关 三 缓存控制参数

【Web】Yslow优化法则(三)添加缓存控制首部

添加Expires和Cache-control头部 Expires和Cache-control实际上是HTTP中的缓存控制头部,它主要影响客户端的请求行为和服务器端的响应. 本文的许多内容来自<HTTP权威指南>,如有任何问题,欢迎指出. 一.缓存的基本概念 这里的缓存,单指web的缓存.当web请求抵达缓存时,如果本地有缓存的副本且缓存未过期,那么就可以从本地读取数据或文档,这样便可以: 1.        减少冗余的数据传输,一定程度上减少服务器的流量和压力. 2.        缓解了网