返回首页

http协议缓存详解

时间:2014-03-14 13:51来源:知行网www.zhixing123.cn 编辑:麦田守望者

在web应用中,缓存无处不在,浏览器有浏览器缓存,代理服务器有缓存,服务器有服务器缓存,php有缓存,数据库有缓存等等……本文主要讲解http协议中的缓存。

http缓存的是指:当Web请求抵达缓存时, 如果本地有“已缓存的”副本,就可以从本地存储设备而不是从原始服务器中提取这个文档。

缓存的好处:

 

缓存的好处是显而易见的,主要如下:
  1. 减少冗余数据传输,节省带宽
  2. 减少服务器负担,提高服务器性能
  3. 加快客户端加载网页的速度。

使用chrome(谷歌浏览器)查看http请求头中缓存信息:

 

通过chrome的开发者工具,可以看到http协议完整的请求头,如下图:
图片
对于静态请求,一般都会缓存,如上图,返回的就是“304 Not Modified”。

如何判断缓存是否需要更新:

主要有如下几种方式:

Expires策略

Expires是Web服务器响应消息头字段,在响应http请求时告诉浏览器在过期时间前浏览器可以直接从浏览器缓存取数据,而无需再次请求。如下图:

图片

Cache-control策略

Cache-Control与Expires的作用一致,都是指明当前资源的有效期,控制浏览器是否直接从浏览器缓存取数据还是重新发请求到服务器取数据。只不过Cache-Control的选择更多,设置更细致,如果同时设置的话,其优先级高于Expires。

Cache-control头部如下:

值可以是public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age
各个消息中的指令含义如下:
  • Public指示响应可被任何缓存区缓存。
  • Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。
  • no-cache指示请求或响应消息不能缓存
  • no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
  • max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应
  • min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。
  • max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。
  • ------分隔线----------------------------
    标签(Tag):http协议缓存
    ------分隔线----------------------------
    推荐内容
  • 一图看懂开源许可协议:GPL、BSD、MIT、Mozilla、Ap

    以下是上述协议的简单介绍( 单击图片可看大图 ): BSD开源协议 BSD开源协议是一个给...

  • 程序员必备的5款软件简介

    我不是一个程序员,没有码农的那种才华,但是经常也会折腾网站,有的时候可以说的为了...

  • 几个用于诊断HTTP响应时间情况的小工具

    如果有人说你的 HTTP 接口响应慢,那可能是他的电脑慢,也可能是网络本身慢,还可能是...

  • 什么是EV 代码签名证书?

    什么是EV 代码签名证书? EV代码签名证书是指扩展验证代码签名证书,具有标准代码签名...

  • 知行网告诉你 机器学习最流行的语言是……?

    应该掌握哪门编程语言,才能获得机器学习或数据科学的工作机会呢?这是一个银弹的问题...

  • 从一个范例看XML的应用详解教程

    如果你已经看了Asp.Net Ajax的两种基本开发模式 这篇文章,你可能很快会发现这样一个...

  • 猜你感兴趣