gpt4 book ai didi

http - "forever"和 "never"是唯一有用的缓存持续时间吗?

转载 作者:可可西里 更新时间:2023-11-01 16:06:38 26 4
gpt4 key购买 nike

在演示中"Cache is King"由 Steve Souders ( at around 14:30 ) 提出,这意味着在实践中您应该为您的资源使用只有两个缓存持续时间:“永远”和“从不”(我自己的术语)。

  • “永远”意味着您可以通过设置非常高的最长期限(例如一年)有效地使资源永久不可变。如果您想在某个时候修改资源,演示文稿建议,您只需在不同的 URL 上发布修改后的资源。 (建议这种重命名是必要的,部分或全部,因为互联网上有大量错误配置的代理。)
  • “从不”意味着您有效地禁用所有形式的缓存并要求浏览器在每次请求时下载资源。

一方面,Google 首席性能工程师给出的任何性能建议都有其自身的分量。另一方面,HTTP 缓存可能是出于某种原因(不仅仅是“永远”和“从不”)设计为具有可变缓存持续时间的,并且仅因为资源已被修改而将 URL 更改为资源似乎违背了HTTP。

“永远”和“从不”是您应该在实践中使用的唯一缓存持续时间吗?这是否与网络上的其他最佳做法冲突?

除了典型的“使用浏览器的用户”用例之外,我还想知道这些原则如何应用于 REST/超媒体 API。

最佳答案

许多人不同意将自己限制在您所描述的“永远”或“永不”。

一方面,它忽略了允许始终重新验证缓存的选项。在这种情况下,如果客户端(或代理)缓存了资源,它会发送一个有条件的 HTTP 请求。如果客户端/代理缓存了最新版本的资源,则服务器会发送一个简短的 304 响应,而不是整个资源。如果客户端(代理)副本已过期,则服务器将发送整个资源。

通过这种方案,客户端将始终获得资源的最新版本,如果资源没有变化,将节省大量带宽。

为了节省更多带宽,可以指示客户端仅在资源早于特定时间段时才重新验证。

如果错误的代理是一个问题,服务器可以指定只有客户端而不是代理可以缓存资源。

我找到了 this document非常简洁地描述了您的缓存选项。 This page更长,但也提供了一些很好的信息。

关于http - "forever"和 "never"是唯一有用的缓存持续时间吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26411007/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com