在我的ASP.Net应用程序,它使用大量javascript和jQuery,但也使用母版页和.Net Ajax片段,我一直在IE6(偶尔还有IE7)的状态栏上看到消息"剩余2项"或"剩余15项",然后是"加载somegraphicsfile.png|gif项"这条消息永远不会消失,可能会也可能不会阻止某些页面功能的运行(它似乎确实停滞不前,但我并不确定).

我可以通过刷新.aspx时间来导致99%的情况发生,但是它提到的项目数和文件有时会有所不同.通常是2、3、12、13或15.

我在谷歌上搜索了答案,这里有一些建议或解释.其中一些对我们不起作用,另一些对我们来说实施或try 并不实际.

以下是一些 idea /理论:

  • IE没有正确缓存图像,因此如果图像在页面上重复,它会反复请求相同的图像,而服务器认为应该在本地缓存图像,因为它已经在该页面上下文中提供了该图像.IE会正确显示图像,但会坐在那里等待永远不会出现的服务器响应.通常,它所说的正在等待的文件会在页面上重复.

  • 该页面使用的是透明的PNG图形.的确是这样,但它们是jQuery用户界面开发人员生成的图形,根据jQuery用户界面开发人员的说法,这些图形是IE安全的.只有jQuery UI组件使用PNG.如果有帮助的话,我们所有的PNG引用都是CSS格式的.我已经将一些图形从PNG更改为GIF,但它很可能会说它正在等待somegraphicsfile.png,就像等待somegraphicsfile.gif一样

  • 图像是在CSS和/或JavaScript中指定的,但位于当前未显示的内容上(例如显示:无项).这可能是真的,但如果是真的,那么我认为预加载图像会起作用,但到目前为止,添加预加载程序没有任何好处.

  • IIS的缓存策略让浏览器感到困惑.如果这是真的,那么只有微软服务器软件与微软的浏览器有问题(这一点我一点也不惊讶).不幸的是,我无法控制将托管应用程序的IIS配置.

有没有人看到了这一点,并找到了应对的方法?尤其是ASP.有jQuery和jQuery UI的Net应用程序?

UPDATE

另一个数据点是:在至少一个页面上,仅仅注释掉jQuery UI Datepicker组件设置就会导致问题消失,但我不认为(或者至少我不确定)这会修复所有页面.如果它真的"修复"了它们,我将不得不更换插件,因为该功能需要存在.目前,IE6/7上的jQuery用户界面似乎没有任何未解决的问题...

UPDATE 2

我判断了IIS设置,在我的任何文件夹上都设置了"启用内容过期"为not.取消选中该设置是解决此问题的常见建议.

我还有另一个更简单的页面,我可以在上面始终如一地创建错误.我使用的是jQuery-UI1.6rc6文件(尽管我也try 过jQuery-UI1.7.1,结果相同).只有当我刷新包含jQuery-UI Datepicker的页面时,才会出现问题.如果我注释掉DatePicker设置,问题就会消失.以下是我在执行此操作时注意到的几件事:

  1. 此页面总是显示"(剩余1项)下载图片http:///images/Calendar_scheduleHS.gif",但仅在重新加载时.
  2. 当我查看HTTP日志(log)记录时,我发现每次动态打开该映像时,它都会从服务器请求该映像,而不考虑缓存.
  3. 该图形的所有请求都已完成,并正确返回该图形.没有一个标记为代码200或304(表示服务器正在告诉IE使用缓存版本).为什么它说当所有的请求都完成了,我就等着那张图呢?我不知道.
  4. 页面上还有一个单独的其他图形(一个UI PNG文件),其代码为304(未修改).在另一个页面上,我用"剩下2个项目"记录了HTTP流量,两个不同的图形文件(都是UI PNG)也有一个304(但都没有被列为"下载"的).
  5. 这个错误不是无害的——页面没有完全响应.例如,如果我点击其中一个应该执行客户端操作的按钮,页面就会刷新.
  6. 离开页面并返回不会产生错误.
  7. 我已经将脚本和脚本引用移到了内容的底部,这不会影响这个问题.脚本仍在$(文档)中运行.准备好了(它太多毛了,除非我必须分开).

FINAL UPDATE AND ANSWER

下面有很多好的答案和建议,但没有一个是我们的问题.最近的一个(也是 bootstrap 我找到解决方案的那个)是关于长期运行的JavaScript的,所以我奖励了那里的赏金(我想我可以自己回答,但我更愿意奖励导致解决方案的信息).

我们的解决方案是:我们在$(文档)上创建了多个jQueryUI日期 Select 器.ASP中包含的脚本中的就绪事件.Net母版页.在这个客户端页面上,本地脚本的$(文档).ready事件具有在特定条件下销毁日期 Select 器的脚本.我们不得不使用"销毁",因为之前版本的datepicker在"禁用"方面存在问题.当我们升级到最新版本的jQuery UI(1.7.1)并将日期 Select 器的"销毁"替换为"禁用"时,问题就消失了(或者基本上消失了——如果你在加载页面时做得太快,仍然有可能获得"n个剩余项"状态).

我对正在发生的事情的理论是这样的:

  1. 页面内容加载并有12个或多个
  2. 母版页脚本创建
  3. IE将每个请求排队
  4. 在请求得到处理之前,
  5. IE还剩下一些

推荐答案

我以前遇到过类似的问题,这是由于在页面中间运行了很长时间的JS片段,浏览器正在等待它完成执行,然后才会完成站点的附加文件下载.

我不确定这是否是你的问题,但它也以类似的方式表现出来.

Asp.net相关问答推荐

使用 aspnet core SignalR 客户端为 VSIX 项目.

如何在asp.net中单击按钮的新选项卡中打开页面?

将 NUnit 添加到 ASP.NET MVC 测试框架的选项中

SignalR 不在服务器上使用 Session

将 Global.asax 迁移到 Startup.cs

有条件地在 Gridview 中隐藏 CommandField 或 ButtonField

在 ASP.NET 中更改错误消息的语言

是否有用于 Asp.net 标记的#IF DEBUG?

从 ASP.NET 中的 POST 方法中检索数据

上传时验证大文件

如何在 ASP.Net Core Razor 页面上重定向

带有文件名的 ASP.net MVC4 WebApi 路由

ASP.NET 上的 WebSockets 教程

Cache.Add 绝对过期 - 是否基于 UTC?

Request.Cookies 和 Response.Cookies 之间的区别

ASP.NET MVC 和 httpRuntime executionTimeout

ExecuteReader:连接属性尚未初始化

解耦 ASP.NET MVC 5 标识以允许实现分层应用程序

配置授权服务器端点

ASP.NET Web 窗体中的 jQuery 验证插件