gpt4 book ai didi

http - 浏览器缓存 - 为什么 IE9 总是显示 http 304 而实际上它并没有访问网络?

转载 作者:可可西里 更新时间:2023-11-01 15:05:46 25 4
gpt4 key购买 nike

我正在尝试正确设置缓存并将 Expires header 设置为 future 365 天,这可以正常工作但无法在 IE9 中正确显示。有谁知道为什么吗?

当您在 IE9 中访问任何网站(例如 www.google.com),然后在地址栏中单击 Enter 以使用完整缓存重新访问它时,它会显示很多额外的 304,而 Fiddler 不会显示。

查看网络检查器选项卡(在 F12 上),IE9 显示它已收到 304 个未修改的 CSS 和 JS 文件响应以及 3 个图像(可能是修改日期大约在过去一个月内的图像 - 其他 30 个未显示的图像是年长)。

但是,根据 Fiddler 和查看我正在开发的网站上服务器上的 IIS 日志,它实际上并没有发出这些请求。 IE9 网络时间线将这些灰色 302 显示为没有等待时间和“<1 毫秒”响应时间 - 而如果我按 F5,它们也是灰色 302,但显示为几毫秒的等待和下载时间(并且它们访问了网络)。

那么为什么IE9 network inspector会认为它对这些发出了条件请求呢?在它到达 Fiddler 之前,它是否真的发出了一个在网络堆栈中得到满足的请求?

Chrome 将所有请求(包括所有图像)显示为灰色 200(来自缓存),除了页面本身是黑色 200(根据 Fiddler 和 IIS 日志,这是正确的)。

Firebug 为 CSS 和 JS 显示灰色 200 OK,奇怪的是只显示一张图像(假设灰色 200 表示来自缓存也是正确的 - 但为什么只显示这些资源而不显示所有其他图像?)

我一直在阅读 Eric Lawrence 关于 IE9 缓存和网络堆栈的博客文章,但他没有提到这种奇怪的行为。

最佳答案

需要说明的是,如果您没有在 Fiddler 中看到它,则它没有进入网络。

IE 网络选项卡有很多错误——其中之一是它很难区分本地满足的缓存命中(例如没有网络命中)和需要服务器重新验证的缓存命中(例如 304) .

这是因为缓存在 WinINET 中向下提供服务,远低于网络选项卡,它位于 URLMon 之上。

话虽如此,您可能还想查看另一个引用资料:IEInternals Blog on Conditional Requests

关于http - 浏览器缓存 - 为什么 IE9 总是显示 http 304 而实际上它并没有访问网络?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8936284/

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