Cache-Control: max-age=0 和 no-cache 有什么区别?

本文介绍了Cache-Control: max-age=0 和 no-cache 有什么区别?的处理方法,对大家解决问题具有一定的参考价值

问题描述

头部 Cache-Control: max-age=0 暗示内容立即被认为是陈旧的(并且必须重新获取),这实际上与 Cache 相同-控制:无缓存.

The header Cache-Control: max-age=0 implies that the content is considered stale (and must be re-fetched) immediately, which is in effect the same thing as Cache-Control: no-cache.

推荐答案

我有同样的问题,并在我的搜索中找到了一些信息(您的问题作为结果之一出现).这是我确定的...

I had this same question, and found some info in my searches (your question came up as one of the results). Here's what I determined...

Cache-Control 标头有两个方面.一侧是它可以由 Web 服务器(又名原始服务器")发送的地方.另一端是浏览器可以发送的地方(又名用户代理").

There are two sides to the Cache-Control header. One side is where it can be sent by the web server (aka. "origin server"). The other side is where it can be sent by the browser (aka. "user agent").

我相信 max-age=0 只是告诉缓存(和用户代理)响应从一开始就已经过时,因此他们应该重新验证响应(例如. 在使用缓存副本之前使用 If-Not-Modified 标头),而 no-cache 告诉他们在使用缓存副本之前必须重新验证缓存副本.来自 14.9.1 什么是可缓存:

I believe max-age=0 simply tells caches (and user agents) the response is stale from the get-go and so they SHOULD revalidate the response (eg. with the If-Not-Modified header) before using a cached copy, whereas, no-cache tells them they MUST revalidate before using a cached copy. From 14.9.1 What is Cacheable:

无缓存

...缓存不能使用响应满足后续请求没有成功的重新验证源服务器.这允许一个源服务器甚至防止缓存通过已配置为的缓存向客户端返回陈旧的响应请求.

...a cache MUST NOT use the response to satisfy a subsequent request without successful revalidation with the origin server. This allows an origin server to prevent caching even by caches that have been configured to return stale responses to client requests.

换句话说,缓存有时可能会选择使用陈旧的响应(尽管我相信他们必须添加一个 Warning 标头),但是 no-cache 说他们' 无论如何都不允许使用陈旧的响应.也许您希望在页面中生成棒球统计数据时使用 SHOULD-revalidate 行为,但是您希望在生成响应时使用 MUST-revalidate 行为到电子商务购买.

In other words, caches may sometimes choose to use a stale response (although I believe they have to then add a Warning header), but no-cache says they're not allowed to use a stale response no matter what. Maybe you'd want the SHOULD-revalidate behavior when baseball stats are generated in a page, but you'd want the MUST-revalidate behavior when you've generated the response to an e-commerce purchase.

尽管您在评论中说 no-cache 不应该阻止存储是正确的,但在使用 no-cache 时,这实际上可能是另一个不同之处.我看到一个页面,Cache Control Directives Demystified,即(我不能保证其正确性):

Although you're correct in your comment when you say no-cache is not supposed to prevent storage, it might actually be another difference when using no-cache. I came across a page, Cache Control Directives Demystified, that says (I can't vouch for its correctness):

在实践中,IE 和 Firefox 有开始处理无缓存指令就好像它指示浏览器甚至不缓存页面.我们开始观察这种行为大约一年前.我们怀疑这一变化是由广泛(和不正确)使用这个防止缓存的指令.

In practice, IE and Firefox have started treating the no-cache directive as if it instructs the browser not to even cache the page. We started observing this behavior about a year ago. We suspect that this change was prompted by the widespread (and incorrect) use of this directive to prevent caching.

...

注意最近,缓存控制:no-cache"也开始表现就像no-store"指令一样.

Notice that of late, "cache-control: no-cache" has also started behaving like the "no-store" directive.

顺便说一句,在我看来,Cache-Control: max-age=0, must-revalidate 应该与 Cache-Control: no-cache<基本相同/代码>.所以也许这是获得 no-cacheMUST-revalidate 行为的一种方法,同时避免 no-cache 明显迁移到执行与 no-store 相同(即没有任何缓存)?

As an aside, it appears to me that Cache-Control: max-age=0, must-revalidate should basically mean the same thing as Cache-Control: no-cache. So maybe that's a way to get the MUST-revalidate behavior of no-cache, while avoiding the apparent migration of no-cache to doing the same thing as no-store (ie. no caching whatsoever)?

我相信 shahkalpesh 的回答适用于用户代理端.您还可以查看13.2.6 消除多重响应的歧义.

I believe shahkalpesh's answer applies to the user agent side. You can also look at 13.2.6 Disambiguating Multiple Responses.

如果用户代理使用 Cache-Control: max-age=0(又名端到端重新验证")发送请求,那么沿途的每个缓存都将重新验证其缓存条目(例如,使用 If-Not-Modified 标头)一直到源服务器.如果回复是 304(未修改),则可以使用缓存的实体.

If a user agent sends a request with Cache-Control: max-age=0 (aka. "end-to-end revalidation"), then each cache along the way will revalidate its cache entry (eg. with the If-Not-Modified header) all the way to the origin server. If the reply is then 304 (Not Modified), the cached entity can be used.

另一方面,使用Cache-Control: no-cache(又名端到端重新加载")发送请求不会重新验证并且服务器不得 响应时使用缓存副本.

On the other hand, sending a request with Cache-Control: no-cache (aka. "end-to-end reload") doesn't revalidate and the server MUST NOT use a cached copy when responding.

这篇关于Cache-Control: max-age=0 和 no-cache 有什么区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,WP2

admin_action_{$_REQUEST[‘action’]}

do_action( "admin_action_{$_REQUEST[‘action’]}" )动作钩子::在发送“Action”请求变量时激发。Action Hook: Fires when an ‘action’ request variable is sent.目录锚点:#说明#源码说明(Description)钩子名称的动态部分$_REQUEST['action']引用从GET或POST请求派生的操作。源码(Source)更新版本源码位置使用被使用2.6.0 wp-admin/admin.php:...

日期:2020-09-02 17:44:16 浏览:1189

admin_footer-{$GLOBALS[‘hook_suffix’]}

do_action( "admin_footer-{$GLOBALS[‘hook_suffix’]}", string $hook_suffix )操作挂钩:在默认页脚脚本之后打印脚本或数据。Action Hook: Print scripts or data after the default footer scripts.目录锚点:#说明#参数#源码说明(Description)钩子名的动态部分,$GLOBALS['hook_suffix']引用当前页的全局钩子后缀。参数(Parameters)参数类...

日期:2020-09-02 17:44:20 浏览:1088

customize_save_{$this->id_data[‘base’]}

do_action( "customize_save_{$this-&gt;id_data[‘base’]}", WP_Customize_Setting $this )动作钩子::在调用WP_Customize_Setting::save()方法时激发。Action Hook: Fires when the WP_Customize_Setting::save() method is called.目录锚点:#说明#参数#源码说明(Description)钩子名称的动态部分,$this->id_data...

日期:2020-08-15 15:47:24 浏览:826

customize_value_{$this->id_data[‘base’]}

apply_filters( "customize_value_{$this-&gt;id_data[‘base’]}", mixed $default )过滤器::过滤未作为主题模式或选项处理的自定义设置值。Filter Hook: Filter a Customize setting value not handled as a theme_mod or option.目录锚点:#说明#参数#源码说明(Description)钩子名称的动态部分,$this->id_date['base'],指的是设置...

日期:2020-08-15 15:47:24 浏览:916

get_comment_author_url

过滤钩子:过滤评论作者的URL。Filter Hook: Filters the comment author’s URL.目录锚点:#源码源码(Source)更新版本源码位置使用被使用 wp-includes/comment-template.php:32610...

日期:2020-08-10 23:06:14 浏览:945

network_admin_edit_{$_GET[‘action’]}

do_action( "network_admin_edit_{$_GET[‘action’]}" )操作挂钩:启动请求的处理程序操作。Action Hook: Fires the requested handler action.目录锚点:#说明#源码说明(Description)钩子名称的动态部分$u GET['action']引用请求的操作的名称。源码(Source)更新版本源码位置使用被使用3.1.0 wp-admin/network/edit.php:3600...

日期:2020-08-02 09:56:09 浏览:894

network_sites_updated_message_{$_GET[‘updated’]}

apply_filters( "network_sites_updated_message_{$_GET[‘updated’]}", string $msg )筛选器挂钩:在网络管理中筛选特定的非默认站点更新消息。Filter Hook: Filters a specific, non-default site-updated message in the Network admin.目录锚点:#说明#参数#源码说明(Description)钩子名称的动态部分$_GET['updated']引用了非默认的...

日期:2020-08-02 09:56:03 浏览:884

pre_wp_is_site_initialized

过滤器::过滤在访问数据库之前是否初始化站点的检查。Filter Hook: Filters the check for whether a site is initialized before the database is accessed.目录锚点:#源码源码(Source)更新版本源码位置使用被使用 wp-includes/ms-site.php:93910...

日期:2020-07-29 10:15:38 浏览:844

WordPress 的SEO 教学:如何在网站中加入关键字(Meta Keywords)与Meta 描述(Meta Description)?

你想在WordPress 中添加关键字和meta 描述吗?关键字和meta 描述使你能够提高网站的SEO。在本文中,我们将向你展示如何在WordPress 中正确添加关键字和meta 描述。为什么要在WordPress 中添加关键字和Meta 描述?关键字和说明让搜寻引擎更了解您的帖子和页面的内容。关键词是人们寻找您发布的内容时,可能会搜索的重要词语或片语。而Meta Description则是对你的页面和文章的简要描述。如果你想要了解更多关于中继标签的资讯,可以参考Google的说明。Meta 关键字和描...

日期:2020-10-03 21:18:25 浏览:1782

谷歌的SEO是什么

SEO (Search Engine Optimization)中文是搜寻引擎最佳化,意思近于「关键字自然排序」、「网站排名优化」。简言之,SEO是以搜索引擎(如Google、Bing)为曝光媒体的行销手法。例如搜寻「wordpress教学」,会看到本站的「WordPress教学:12个课程…」排行Google第一:关键字:wordpress教学、wordpress课程…若搜寻「网站架设」,则会看到另一个网页排名第1:关键字:网站架设、架站…以上两个网页,每月从搜寻引擎导入自然流量,达2万4千:每月「有机搜...

日期:2020-10-30 17:23:57 浏览:1336