http协议-缓存控制:no-cache/must-revalidate/no-store

原文:http://hyj1254.iteye.com/blog/1165387

客户端从服务器请求数据经历如下基本步骤: 
  1、如果请求命中本地缓存则从本地缓存中获取一个对应资源的"copy"; 
  2、检查这个"copy"是否fresh,是则直接返回,否则继续向服务器转发请求。 
  3、服务器接收到请求,然后判断资源是否变更,是则返回新内容,否则返回304,未变更。 
  4、客户端更新本地缓存。 
  no-cache的作用是:强制客户端跳过步骤2,直接向服务器发送请求。也就是说每次请求都必须向服务器发送。 
  must-revalidate:作用与no-cache相同,但更严格,强制意味更明显。但这只是理论上的描述,根据我在ff6上的测试,它几乎不起作用:只要请求的频率加快到一定程度,服务器就接收不到请求。 
  no-store:缓存将不存储response,包括header和body。测试结果表明,除每次请求都必发送到服务器外,响应代码均是200,且request并没有发送"If-Modified-Since"和"If-None-Match"头,这意味着缓存的确没有存储response。 
  以上三者都是要求客户端每次请求都必须到服务器进行revalidate,此功能还可以通过max-age实现:

Java代码  

  1. Cache-Control:max-age=0

测试结果证明了这一点,每次都请求了服务器,且状态码是304。

Java代码  

  1. <META HTTP-EQUIV="Cache-control" CONTENT="no-cache">

这种设置方式大部分服务器不支持,额外的解析成本、只支持html文件等原因造成的结果是,它基本上是无效的。

时间: 2024-10-12 21:08:19

http协议-缓存控制:no-cache/must-revalidate/no-store的相关文章

06 HTTP协议缓存控制

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

HTTP 之 HTTP协议(HTTP协议概述、HTTP消息、缓存控制相关头部、Cookie相关头部)

一.HTTP 协议概述 HTTP协议历史与标准 总结:本章内容主要介绍了 HTTP协议(HTTP协议概述.HTTP消息.缓存控制相关头部.Cookie相关头部)

HTTP缓存控制小结

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

HTTP协议-缓存

HTTP 协议中,缓存更多关心的文档资源的再利用.其目的是减少数据传输,加快相应速度等等.而对于缓存采用的是什么方案,也就是存在内存中还是硬盘中之类的问题,就属于另外的内容了. 假设,我身在广东,但是我访问的服务器在北京,在服务器其他条件一致的时候,我访问北京的服务器所需要的速度,肯定没有访问广东的服务器快.此时如果先访问靠近我的服务器,先看看我需要的资源有没有相应的副本,有就直接返回:没有就到源服务器中请求.这样响应速度肯定会快很多,而且也减轻了源服务器的压力.当然这里还有‘缓存命中率’和‘字

浏览器 HTTP 协议缓存机制详解

1.缓存的分类 2.浏览器缓存机制详解 2.1 HTML Meta标签控制缓存 2.2 HTTP头信息控制缓存 2.2.1 浏览器请求流程 2.2.2 几个重要概念解释 3.用户行为与缓存 4.Refer: https://www.cnblogs.com/520yang/articles/4807408.html 最近在准备优化日志请求时遇到了一些令人疑惑的问题,比如为什么响应头里出现了两个 cache control.为什么明明设置了 no cache 却还是发请求,为什么多次访问时有时请求里

Web缓存(一) - HTTP协议缓存

为什么要使用 Web 缓存 Web缓存一般分为浏览器缓存.代理服务器缓存以及网关缓存,本文主要讲的是 浏览器缓存,其它两种缓存大家自行去了解下. Web 缓存游走于服务器和客户端之间.这个服务器可能是源服务器(资源所驻留的服务器Add),数量可能是1个或多个:这个客户端也可能是1个或多个.Web 缓存就在服务器-客户端之间搞监控,监控请求,并且把请求输出的内容(例如html页面. 图片和文件)(统称为副本)另存一份:然后,如果下一个请求是相同的 URL,则直接请求保存的副本,而不是再次麻烦源服务

005-优化web请求一-gzip压缩、http缓存控制和缓存校验[Pragma、Expires、Cache-Control、max-age、Last-Modified、用户刷新访问、避免过度304]

优化Web应用的典型技术:缓存控制头信息.Gzip.应用缓存.ETag.反应型技术[异步方法调用和WebSocket] 一.模板缓存 spring.thymeleaf.cache=true spring.messages.cache-duration= 二.Gzip压缩 Gzip是一种能够被浏览器直接理解的压缩算法.服务器会提供压缩响应,会耗一些cpu,但是减少带宽 GZIP压缩是一个经常被用到的WEB性能优化的技巧,它主要是对页面代码,CSS,Javascript,PHP等文件进行压缩,而且在

WEB缓存控制机制与varnish简介

在说到缓存varnish前,我们首先来了解下对于web服务缓存到底是什么?它有哪些特点,基础原理是什么? http是web应用协议,通常我们说的一次http事务,不外乎就是客户端请求,服务端响应,通常我们是这样去理解http一次事务的过程:其实对于web服务器来说,一个客户端访问服务端的某资源时,往往客户端的请求没有到达真正提供web服务的服务器上,就被响应了,这是为什么呢?我们知道一个WEB站点在提供对外访问的页面上在一定时间内都不会发生变化,而对于这些不经常变化的资源,访问又特别大的情况,如

20丨生鲜速递:HTTP的缓存控制

缓存(Cache)是计算机领域里的一个重要概念,是优化系统性能的利器. 由于链路漫长,网络时延不可控,浏览器使用 HTTP 获取资源的成本较高.所以,非常有必要把“来之不易”的数据缓存起来,下次再请求的时候尽可能地复用.这样,就可以避免多次请求 - 应答的通信成本,节约网络带宽,也可以加快响应速度. 试想一下,如果有几十 K 甚至几十 M 的数据,不是从网络而是从本地磁盘获取,那将是多么大的一笔节省,免去多少等待的时间. 实际上,HTTP 传输的每一个环节基本上都会有缓存,非常复杂. 基于“请求