我们最近将一个运行 Server 2008 x64 和 IIS 7 的网站投入生产。ASP.NET 页面显然加载正常,但当涉及到 IE 7 和 8 时,页面上的 CSS 和 JavaScript 文件出现了奇怪的缓存问题。
IE 有时会获取构成页面所需的所有文件(即 CSS 和 JS 文件)。当我从地址栏手动转到丢失的文件时,它们从本地缓存中返回时为空。我按 F5 键打开这些源文件,奇迹般地它们就正常下载了。加载几个文件后刷新网站,缓存似乎可以保存。
此问题仅在运行 XP 的 IE 7 和 8 上重现(同样是偶尔出现)。Chrome 和 Firefox 似乎不受此影响。
我们已将 IIS 设置为使用服务器端内核缓存来缓存 CSS、JS 和图像。我们还将内容App_Themes
和Scripts
目录设置为立即过期。最初以为是 SWF 在页面加载时加载了 FLV。这些修复并未解决问题。
在使用 Server 2003 和 IIS 6 的临时服务器上我们没有遇到任何问题。
任何想法都将不胜感激。
PS 这听起来与这个问题类似:但我们确实安装了静态内容模块。 IIS:CSS、Javascript 和图像的 Content-Length 为 0
答案1
一个考虑因素可能是缓存所在的文件结构损坏,因为浏览器的类型/系列通常会在文件系统上设置自己的缓存区域。您可以尝试将缓存重新定义为其他位置或检查文件系统是否存在问题(chkdsk)。
答案2
可以通过以下方法修复此问题
进入 IIS 下的网站,单击“输出缓存”,选择 aspx 页面,选择单选按钮“防止所有缓存”