html中关于页面缓存的标记

页面缓存有3种:客户端缓存、代理缓存 proxy cache、服务器(或反向代理缓存)gateway cache。本文只介绍客户端缓存。客户端从服务器请求数据经历如下基本步骤: 

  1、如果请求命中本地缓存(根据完整URL)则从本地缓存中获取一个对应资源的"copy" 

  2、检查这个"copy"是否fresh,是则直接返回,否则继续向服务器转发请求。 

  3、服务器接收到请求,然后判断资源是否变更,是则返回新内容,否则返回304,未变更。 

  4、客户端更新本地缓存。 

 

以下介绍html页面(包括jsp、asp等)中,缓存标记的意义。因为这些缓存标记是由浏览器识别的,而每个浏览器识别的缓存标记略有不同,所以有些标记通用性不够。

  1. html的meta是一种缓存注解,但要解析html才能知道,效果不是很好,支持的浏览器也有限。
  2. Pragma因为标准文档没有明确的描述,所有有的地方不能正常工作
  3. Expires(http头部)是应用最广的缓存标识。但是它要设置过期时间(Date类型),比较不方便。

    可以用response.setDateHeader().另外是需要客户端和服务器时间一致。

  4. Cache-Control是http1.1定义的一个http头部,用于弥补Expires的不足。同时出现时优先级比Expires高。no-cache是跳过步骤2,所以也可能使用缓存;而no-store才是真正不用缓存,即不存在copy

    must-revalidatemax-age=0作用与no-cache类似。

你可能感兴趣的:(html中关于页面缓存的标记)