阅读时http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html ,我发现缓存算法比我想象的要复杂。
根据 RFC2616,如果响应是新鲜的,则发送 HTTP 请求。和
response_is_fresh = (freshness_lifetime > current_age)
current_age 可以从max-age 或Expires header 派生,它们都与本地时钟无关。但是,freshness_lifetime 的计算取决于本地时钟。
因此,如果浏览器本地时钟与服务器端时钟不一致。 HTTP 缓存是否可能不会免除不必要的请求?
谢谢
最佳答案
它们的时钟不必同步,但客户端需要一个工作时钟来确定缓存资源的年龄并将其与 max-age
相匹配。如果响应中不存在 max-age
,客户端可以通过比较 Date
来计算它。 和 Expires
标题。
但是,如果客户端遭受极端的时钟偏差,缓存将崩溃并且资源可能被错误地缓存,因为它们的年龄无法可靠地确定。
关于http - 如果本地时钟与服务器时钟不一致,浏览器缓存如何运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6279319/