http - 如果本地时钟与服务器时钟不一致,浏览器缓存如何运行?

标签 http caching

阅读时http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html ,我发现缓存算法比我想象的要复杂。

根据 RFC2616,如果响应是新鲜的,则发送 HTTP 请求。和

response_is_fresh = (freshness_lifetime > current_age)

current_age 可以从ma​​x-ageExpires header 派生,它们都与本地时钟无关。但是,freshness_lifetime 的计算取决于本地时钟。

因此,如果浏览器本地时钟与服务器端时钟不一致。 HTTP 缓存是否可能不会免除不必要的请求?

谢谢

最佳答案

它们的时钟不必同步,但客户端需要一个工作时钟来确定缓存资源的年龄并将其与 max-age 相匹配。如果响应中不存在 max-age,客户端可以通过比较 Date 来计算它。 Expires 标题。

但是,如果客户端遭受极端的时钟偏差,缓存将崩溃并且资源可能被错误地缓存,因为它们的年龄无法可靠地确定。

关于http - 如果本地时钟与服务器时钟不一致,浏览器缓存如何运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6279319/

相关文章:

java - 具有多个 Java 应用程序的 Hibernate 数据库完整性

caching - 为什么 mem_load_retired.l1_hit 和 mem_load_retired.l1_miss 没有添加到加载总数中?

java - Java http 服务器上的访问者计数器

c++ - 使用 Winsock 的简单 HTTP 获取

javascript - 如何以通用方式禁用 cookie,直到用户接受 cookie

javascript - 在 Firefox 或 Edge 中从缓存预加载图像时出现问题

ios - UIWebView 忽略磁盘缓存?

android - 替换已弃用的 DefaultHttpClient

HTTP 多范围请求 - 响应中的 header

javascript - 用谷歌的sw-precache搭建的service worker真的能做到networkFirst吗?