Asp classic 经典的ASP-IIS5到IIS6迁移会导致图像缓存问题吗?

Asp classic 经典的ASP-IIS5到IIS6迁移会导致图像缓存问题吗?,asp-classic,iis-6,iis-5,Asp Classic,Iis 6,Iis 5,为这个冗长的问题提前道歉 我确实是一名数据库程序员,但继承了对经典ASP intranet应用程序的支持,该应用程序最近已从IIS 5迁移到运行IIS 6的新服务器。用户群大约有12个,全部使用IE6 UI显示从数据库返回的项目的层次结构,在用户导航时使用HTML无序列表和javascript的组合来隐藏/扩展分支 图像通过CSS(使用列表样式图像)显示在列表成员旁边,为每种类型的项目使用不同的图像。层次结构中不同项目类型(因此图像)的数量在2到10之间变化。层次结构在20到200个项目之间变化

为这个冗长的问题提前道歉

我确实是一名数据库程序员,但继承了对经典ASP intranet应用程序的支持,该应用程序最近已从IIS 5迁移到运行IIS 6的新服务器。用户群大约有12个,全部使用IE6

UI显示从数据库返回的项目的层次结构,在用户导航时使用HTML无序列表和javascript的组合来隐藏/扩展分支

图像通过CSS(使用列表样式图像)显示在列表成员旁边,为每种类型的项目使用不同的图像。层次结构中不同项目类型(因此图像)的数量在2到10之间变化。层次结构在20到200个项目之间变化

问题:

自从迁移到IIS 6以来,一些用户遇到了一个问题,这似乎是由于图像未能正确应用于层次结构中的一个或多个项目所致;列表显示正确,但缺少一个或多个图像,单击任何链接都会导致加载空页面

使用Wireshark和IIS日志对网络流量进行的分析表明,问题不在服务器端-所有内容都已正确提供给客户端

这个问题似乎与客户端的内容缓存有关:它似乎更经常地影响那些以前没有在当前PC上使用过应用程序,或者已经有一段时间没有使用过应用程序的用户。 此外,通过启动会话,清除浏览器缓存,然后刷新页面,我可以在三次尝试中复制一次问题。但是,在IIS 5上运行的应用程序也是如此,因此此问题可能在迁移到IIS 6之前就存在,但发生的频率较低。 偶尔,如果我离开会议20分钟左右,浏览器似乎“找到”丢失的图像,一切正常

如果通过本地代理(我使用的是Fiddler)访问应用程序,则问题永远不会发生,尽管Fiddler连接日志显示为检索图像而与服务器建立的一个或多个连接已中止。与以前一样,网络流量显示映像是由服务器返回的。但是,使用代理似乎可以让IE从缓存中找到其他成功检索到的图像副本

我对调试ASP/IIS问题的有限知识已经到了极限。 从CSS中删除列表样式的图像可以解决这个问题,但这必须是最后的选择,因为这会使应用程序更加难以使用

如有任何关于我如何进行的建议,我们将不胜感激

编辑

AnonJr建议这一定是客户机配置问题,因为所有其他组件似乎都正常工作

我忽略了一个简单的客户端配置问题,因为这是唯一受所述问题影响的应用程序 我已经测试了“工具”>“Internet选项”>“临时文件”>“设置”下的所有选项,行为没有任何变化

我应该考虑哪些其他客户端配置选项

编辑2-解决方案

接受的答案促使我搜索一个已知问题,即当从客户端脚本生成HTML时,IE6请求多个图像副本

文章(指出这种行为是“设计的”)建议通过将所需图像加载到一个不可见的DIV中来预缓存它们:

<DIV style='display:none'><IMG SRC='image.gif'></DIV>

<>这对我来说是有效的——我不能通过在会话中间清除浏览器缓存来复制这个问题,而FIDLE跟踪则显示每个图像只被请求一次。
我确实发现了一个我以前不知道的警告;IE缓存区分大小写,因此只有在不可见DIV中指定的文件名大小写与页面中其他地方使用的文件名大小写匹配时,才会使用缓存图像。

您可能希望将注意力集中在调整客户端的缓存设置上。如果图像是由服务器发送的,则不太可能是IIS问题。如果将图像的HTML发送到浏览器,则这不是ASP问题。那就剩下客户了


代理可能会缓解一些问题,和/或它可能是IE6决定如何缓存图像的一个因素,等等。

您可能希望将注意力集中在调整客户端的缓存设置上。如果图像是由服务器发送的,则不太可能是IIS问题。如果将图像的HTML发送到浏览器,则这不是ASP问题。那就剩下客户了


代理可能会缓解一些问题,和/或它可能是IE6决定如何缓存图像等的一个因素。

这有点像IE6错误,浏览器对同一资源发出多个请求。例如,如果内容要求在列表中显示重复20次的小图标,而不是仅获取该图像一次,它将尝试获取该图像20次。OK 19个响应没有被修改,但是仍然有19个额外的往返到服务器

我发现在过去,这种过度的请求最终会导致太多未填满的请求。在这一点上,对服务器的进一步请求,即使是对其他页面的请求,也很难得到响应,至少在一段时间内是如此

我不确定在你的案例中是否会发生这种情况,检查这种情况的一种方法是使用IE7,看看你是否遇到同样的问题,这个错误在IE7中得到了修复

编辑:现在问题已经确认是我提到的bug,您还应该注意KB中提到的“短时延迟”。潜在的问题是,为了重新使用新获取的图像,浏览器需要执行延迟到当前javascript块完成的工作。需要的不仅仅是“短时间延迟”,还需要异步OU