C/C++教程

Cache-Control的理解

本文主要是介绍Cache-Control的理解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Cache-Control

计算一个response的Freshness Lifetime(新鲜生命周期、保质期)值的规则为:

  1. 如果cache是共享的、且response中含有s-maxage,则值为s-maxage;
  2. 如果response中含有max-age,则值为max-age;
  3. 如果response的header中含有Expires,则值为Expires减去response header中的Date;
  4. 否则的话,表示response中没有显式的过期时间,可能会采用探测型的策略(Last-Modified);

Request Cache-Control Directives:

  1. max-age: <delta-seconds>

    表示client不愿意接收age超过delta-seconds秒的response。

  2. max-stale: <delta-seconds>

    如果max-stale被赋值,表示client愿意接收超过其freshness lifetime delta-seconds秒的response;如果max-stale未被赋值,则表示client愿意接收任何age的stale response。

  3. min-fresh

  4. no-cache

    表示在没有成功验证server时,

  5. no-store

  6. no-transform

  7. only-if-cached

    表示client仅仅愿意接受一个stored response。server如果有缓存则返回缓存,否则返回504错误。

表示client愿意接受超过其freshness lifetime一定时间的response。如果max-stale没有被赋值,则表示client愿意接受任何陈旧(stale)的值。

Response Cache-Control Directives

  1. must-revalidate

  2. no-cache

    在使用任何cached response之前,必须先重新验证服务器(revalidate with the server)。首先连接服务器、并比较服务器上资源的ETag和缓存中的ETag是否一样,如果一样,则返回缓存的资源;

    否则,就意味着资源已经发生更新,client需要下载最新的资源并返回。

  3. no-store

  4. no-transform

  5. public

  6. private

  7. proxy-revalidate

  8. max-age=<delta-seconds>

    该response在delta-seconds秒以后将变为陈旧的。

  9. s-maxage=<delta-seconds>

    在共享的缓存中,s-maxage会覆盖max-age指令值或者Expires header的值。

这篇关于Cache-Control的理解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!