当前位置:  开发笔记 > 编程语言 > 正文

IE 8丢弃内存页面?

如何解决《IE8丢弃内存页面?》经验,为你挑选了1个好方法。

这个问题的一个分拆/进化这个问题.(那个问题被标记为已经解决了,因为我对它提出了一个赏金并且它自动解决了,但它从未得到过真正的回答.)

摘要是这样的:我们有一个ASP.NET站点.有时候,当客户要求奇怪的网址时,我们会收到错误.根据客户端要求的资源,看起来html源中缺少4k块文本.

一个简单的例子......如果我们有一个看起来像这样的页面:

Here's some text
a bunch more stuff
...(a large block of text)...
AND NOW MORE STUFF LATER

客户可能会要求提供网址:"myValidLiORE%20STUFF%20LATER".

它就好像html源的一部分不在那里......而那个缺失的部分似乎正好是4KB(4096字节)长(或根据某些人,有时是1KB?).

不幸的是,我们无法按需复制此错误,但我们每天都会看到它多次来自客户端.

起初我们认为这是Webresource.axd的一个问题,因为我们碰巧在那里看到了很多......但现在我认为这主要是因为我们将类似的错误归为一类,并且当发生损坏时这些错误往往会发生在那个特定的地区.现在我正在研究更广泛的问题,我看到的地方我们得到了非常不同的错误,看起来它们是由同样的辍学问题造成的.

我们已经在IE 8中看到了很多,并且随着IE 8变得越来越流行,它变得越来越频繁.我们偶尔会看到它自称为IE 7的浏览器......如果IE 8进入"兼容模式",IE 8将会这样做.

我的理论,在这一点上(我试图找到一种测试方法)是Web服务器正确地发送字节流中的所有数据......并且浏览器IE 8有问题,并在某些条件下删除它的内存页(4k).

然而,我有点担心这个理论,因为显然有些人报告说这种"偶尔"使用IE 6或FF 3 ......这些往往是异常值,可能只是具有类似症状的不同问题,但如果这些浏览器真的是一样的东西,这会让我的理论脱离水面.不过,我现在还没有更好的主意.

我所拥有的另一个想法可能是服务器上相对较新的服务包导致向客户端提供的数据出现问题,偶尔会丢失4KB.这个理论的问题在于它没有解释IE8上错误的优势,以及其他客户端浏览器上的错误.

所以这些问题最终会得到答案:

    有人遇到过这种情况么?(也许现在它在你的雷达上?)

    任何人都能一致地复制这个问题吗?

    有什么想法是什么?你能证实或反驳我的理论吗?

    有任何修复或解决方法吗?

EricLaw.. 12

**编辑4/1/10:**更新:4k错误现在由2010年3月30日的IE8累积更新修复.blogs.msdn.com/ieinternals/archive/2010/04/01/

Internet Explorer团队一直在调查此问题.

- =影响= -

到目前为止,我们认为该问题对最终用户使用Web应用程序的体验没有影响; 唯一的负面影响是JavaScript推测下载引擎发送的虚假/格式错误的请求.当解析器实际需要脚本时,它将在那时正确下载和使用.

- =境遇= -

虚假请求似乎仅在某些定时情况下发生,只有当预解析器被强制重启时(如同包含具有CHARSET指令的Content-Type的META HTTP-EQUIV标记出现在文档中)并且仅在JavaScript SRC URL跨越HTTP响应正文的第4096个字节.

- 解决方法= = -

我们目前认为,通常可以通过使用HTTP Content-Type标头声明页面的CHARSET而不是在页面中指定它来缓解此问题.

所以,而不是放

[META HTTP-EQUIV ="Content-Type"CONTENT ="text/html; charset = utf-8"]

相反,在头标记中,发送以下HTTP响应标头:

内容类型:text/html; 字符集= utf-8的

请注意,HTTP标头中的charset规范可以提高所有浏览器的性能,因为浏览器的解析器在遇到字符集声明时无需从头开始重新解析.此外,使用HTTP标头有助于缓解某些XSS攻击媒介.



1> EricLaw..:

**编辑4/1/10:**更新:4k错误现在由2010年3月30日的IE8累积更新修复.blogs.msdn.com/ieinternals/archive/2010/04/01/

Internet Explorer团队一直在调查此问题.

- =影响= -

到目前为止,我们认为该问题对最终用户使用Web应用程序的体验没有影响; 唯一的负面影响是JavaScript推测下载引擎发送的虚假/格式错误的请求.当解析器实际需要脚本时,它将在那时正确下载和使用.

- =境遇= -

虚假请求似乎仅在某些定时情况下发生,只有当预解析器被强制重启时(如同包含具有CHARSET指令的Content-Type的META HTTP-EQUIV标记出现在文档中)并且仅在JavaScript SRC URL跨越HTTP响应正文的第4096个字节.

- 解决方法= = -

我们目前认为,通常可以通过使用HTTP Content-Type标头声明页面的CHARSET而不是在页面中指定它来缓解此问题.

所以,而不是放

[META HTTP-EQUIV ="Content-Type"CONTENT ="text/html; charset = utf-8"]

相反,在头标记中,发送以下HTTP响应标头:

内容类型:text/html; 字符集= utf-8的

请注意,HTTP标头中的charset规范可以提高所有浏览器的性能,因为浏览器的解析器在遇到字符集声明时无需从头开始重新解析.此外,使用HTTP标头有助于缓解某些XSS攻击媒介.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有