为啥仅从我的开发机器上的缓存中请求我的 aspx 页面

Posted

技术标签:

【中文标题】为啥仅从我的开发机器上的缓存中请求我的 aspx 页面【英文标题】:Why my aspx page is being requested from cache on my dev machine only为什么仅从我的开发机器上的缓存中请求我的 aspx 页面 【发布时间】:2012-02-29 18:01:33 【问题描述】:

好的 - 所以我正在测试一个 Web 应用程序,并且在我的开发框上遇到了一些我无法解决的奇怪行为。在同事的机器上没有表现出相同的行为。

问题如下:我正在向 index.aspx 发出两个请求。第一个请求以 HTTP 200 的形式返回(如我所料),但第二个请求是从浏览器缓存中检索的。我在每次测试开始时清除缓存以确保测试一致。我还使用了一个名为 HTTPWatch 的实用程序(很像提琴手,但即使请求是从浏览器缓存中检索到的也会显示请求),它向我显示 HTTP 信息,这就是我知道它来自缓存的方式。

这个问题只出现在我的一台机器上。

同事机器(工作正常)

请求被发送到 index.aspx 已发送标头: (请求行): GET /index.aspx HTTP/1.1 接受: text/html, application/xhtml+xml, / 接受编码: gzip、放气 接受语言: en-GB 连接:保持活动状态 Cookie:(不相关) 主持人: 开发人员 用户代理: Mozilla/5.0(兼容;MSIE 9.0;Windows NT 6.1;WOW64;Trident/5.0) 收到的标头: (状态行): HTTP/1.1 200 OK 缓存控制:私有 内容长度: 10369 内容类型: text/html; charset=utf-8 日期: 2012 年 2 月 8 日星期三 09:09:38 GMT 服务器: Microsoft-IIS/7.5 X-AspNet-版本: 2.0.50727 X-Powered-By: ASP.NET 第二个请求发送到 index.aspx 已发送标头: (请求行): GET /index.aspx HTTP/1.1 接受: text/html, application/xhtml+xml, / 接受编码: gzip、放气 接受语言: en-GB 连接:保持活动状态 Cookie:(不相关) 主持人: 开发人员 推荐人: http://dev/index.aspx 用户代理: Mozilla/5.0(兼容;MSIE 9.0;Windows NT 6.1;WOW64;Trident/5.0) 收到的标头: (状态行): HTTP/1.1 200 OK 缓存控制:私有 内容长度: 33588 内容类型: text/html; charset=utf-8 日期: 2012 年 2 月 8 日星期三 09:09:38 GMT 服务器: Microsoft-IIS/7.5 X-AspNet-版本: 2.0.50727 X-Powered-By: ASP.NET

我的机器(不工作)

请求被发送到 index.aspx 已发送标头: (请求行): GET /index.aspx HTTP/1.1 接受: application/x-ms-application、image/jpeg、application/xaml+xml、image/gif、image/pjpeg、application/x-ms-xbap、application/vnd.ms-excel , application/vnd.ms-powerpoint, application/msword, / 接受编码: gzip、放气 接受语言: en-GB 连接:保持活动状态 Cookie:(不相关) 主持人: 开发人员 用户代理: Mozilla/4.0(兼容;MSIE 8.0;Windows NT 6.1;WOW64;Trident/4.0;SLCC2;.NET CLR 2.0.50727;.NET CLR 3.5.30729;.NET CLR 3.0 .30729;媒体中心 PC 6.0;.NET4.0C;.NET4.0E) 收到的标头: (状态行): HTTP/1.1 200 OK 缓存控制:私有 内容长度: 10374 内容类型: text/html; charset=utf-8 日期: 2012 年 2 月 8 日星期三 09:45:304GMT X-Powered-By: ASP.NET 第二个请求发送到 index.aspx 已发送标头: (无):没有为缓存项目发送标头 收到的标头: (无):没有收到缓存项目的标头

您可能已经注意到,浏览器是不同的(从 ie8 到 ie9),但我仍然不明白为什么会出现这样的问题。我认为它必须是一些浏览器配置,因为第一个请求收到的标头几乎相同。

如果有人能解释为什么从缓存中检索第二个请求,我将不胜感激。

【问题讨论】:

【参考方案1】:

好的 - 所以我想我已经解决了。

似乎 IE 在某处有一些陈旧的缓存,即使我明确清除了缓存也没有被清除。

我使用 ProcMon 来监视进程并查看当 IE 从缓存中获取文件时正在访问的文件。我看到尽管清除了我的缓存,但在以下位置访问了一个目录:

C:\Users\%username%\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\%Random Characters%\

我删除了 C:\Users\%username%\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5 文件夹的内容,现在我似乎没有得到上述行为。

我在 google 上搜索了其他在 IE 中清除缓存有困难的人,但找不到太多。

说实话,不太确定这个!

【讨论】:

【参考方案2】:

您可以在 IE 中更改设置 Internet选项->常规->浏览历史记录->设置->Internet临时文件 将检查存储页面的较新版本更改为“每次访问该页面”

【讨论】:

以上是关于为啥仅从我的开发机器上的缓存中请求我的 aspx 页面的主要内容,如果未能解决你的问题,请参考以下文章

如何从我的机器上删除 npm 注册表?

YDN-DB 仅从我的 IndexedDb 存储中获取前 100 行

在启用 CORS 的情况下,无法从我的请求标头中检索我的 x-api-key。为啥?

为啥我的 Ajax 发布请求在表单提交中被阻止?

我想知道我如何能够从我的 iphone 上的 windows 网站开发一个本地主机网站

为啥 virtualenv 从我的 shell 继承 $PYTHONPATH?