Internet explorer IE 8删除内存页?

Internet explorer IE 8删除内存页?,internet-explorer,memory,Internet Explorer,Memory,这是一个衍生/演变的问题。(这个问题被标记为已解决,因为我悬赏了它,它自动解决了,但它从未真正得到回答。) 总结如下:我们有一个ASP.NET网站。有时,当客户端请求奇怪的URL时,我们会出错。从客户端请求的资源来看,html源中似乎缺少4k的文本块 一个简单的示例…如果我们有一个如下所示的页面: <a href="myValidLink.aspx">Here's some text</a> a bunch more stuff ...(a large block of

这是一个衍生/演变的问题。(这个问题被标记为已解决,因为我悬赏了它,它自动解决了,但它从未真正得到回答。)

总结如下:我们有一个ASP.NET网站。有时,当客户端请求奇怪的URL时,我们会出错。从客户端请求的资源来看,html源中似乎缺少4k的文本块

一个简单的示例…如果我们有一个如下所示的页面:

<a href="myValidLink.aspx">Here's some text</a>
a bunch more stuff
...(a large block of text)...
AND NOW MORE STUFF LATER

更多的东西
…(一大块文字)。。。
现在,以后还有更多的东西
客户端可能会请求url:“myValidLiORE%20STUFF%20LATER”

它的行为就像html源代码的一部分不存在一样……而缺失的部分似乎正好是4KB(4096字节)长(或者根据一些人的说法,有时是1KB?)

不幸的是,我们无法按需复制此错误,尽管我们每天都会看到客户多次出现此错误

起初我们认为这是Webresource.axd的问题,因为我们碰巧在那里看到了很多…但现在我认为这主要是因为我们将类似的错误分组在一起,而这些错误往往是在特定区域发生损坏时发生的。现在,我看到了更广泛的问题,我看到了一些地方,我们得到了非常不同的错误,这些错误看起来像是由同一个问题引起的,即删除一个块

我们在IE8中看到了很多这样的情况,随着IE8越来越流行,这种情况变得越来越频繁。我们偶尔会看到一个报告自己为IE7的浏览器……如果它进入“兼容模式”,IE8也会这样做

我的理论是,在这一点上(我正试图找到一种方法来测试),web服务器正确地发送字节流中的所有数据……浏览器IE 8出现问题,在某些情况下会删除其中的内存页(4k)

然而,我有点担心这个理论,因为显然有些人报告说在IE 6或FF 3中“偶尔”会看到这个现象……这些往往是异常值,可能只是不同的问题,有着相似的症状,但如果这些浏览器上的问题真的是一样的,那我的理论就泡汤了。不过,在这一点上,我没有更好的主意

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

所以这些问题,希望最终会有答案:

  • 还有其他人遇到过这种情况吗?(也许现在你已经注意到了?)
  • 有人能始终如一地重复这个问题吗
  • 你知道这是什么吗?你能证实或反驳我的理论吗
  • 是否有任何修复或解决方法
  • **编辑2010年4月1日:**
    更新:4k错误现在由IE8于2010年3月30日的累积更新修复。blogs.msdn.com/ieinternals/archive/2010/04/01/

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

    -=影响=-

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

    -=情况=-

    伪请求似乎仅在某些计时情况下发生,仅当预解析器被迫重新启动时(如文档中出现包含带有字符集指令的内容类型的META HTTP-EQUIV标记时),以及仅当JavaScript SRC URL跨越HTTP响应正文的4096字节时

    -=解决方法=-

    我们目前认为,通过使用HTTP内容类型头声明页面的字符集,而不是在页面中指定字符集,通常可以缓解此问题

    所以,与其说

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

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

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

    请注意,在HTTP头中指定字符集可以提高所有浏览器的性能,因为浏览器的解析器不需要在遇到字符集声明时从头开始解析。此外,使用HTTP标头有助于缓解某些XSS攻击向量。

    是关于此问题的最新文章

    缺少的4k错误: 文章指出:“通过使用HTTP内容类型头声明页面的字符集,而不是在页面中指定它,可以消除解析器重新启动的一个原因。” Eric Lawrence在电子邮件中:
    “不幸的是,另一个已知的导致解析器重新启动的原因是使用了XML名称空间,而您的站点似乎正在使用它。”因此,如果您使用XHTML,可能会出现4K问题

    我们也有同样的问题。我补充说:

            Response.ContentType = "text/html"
            Response.Charset = "utf-8"
    

    到我们的基页类。我将很快报告结果。

    FWIW这里是我从LogParser中1个月的日志中获得的统计数据

    12331点击ScriptResource和WebResource/183错误

    按用户代理信息细分。似乎只支持IE8理论(加上“兼容模式”用户代理)

    cs uri茎MSIEVersion三齿版本计数 /WebResource.axd MSIE+8.0 Trident/4.0 100 /ScriptResource.axd MSIE+8.0 Trident/4.0 36 /WebResource.axd MSIE+7.0 Trident/4.0 44 /ScriptResource.axd MSIE+7.0 Trident/4.0 2 /ScriptResource.axd不是IE不是Trident 1 单一的非IE8错误根本没有查询字符串,来自Firefox/3.5.3浏览器(与此无关)

    我的页面中没有任何元HTTP-EQUIV=“Content Type”。虽然我有这个要做 cs-uri-stem MSIEVersion TridentVersion COUNT /WebResource.axd MSIE+8.0 Trident/4.0 100 /ScriptResource.axd MSIE+8.0 Trident/4.0 36 /WebResource.axd MSIE+7.0 Trident/4.0 44 /ScriptResource.axd MSIE+7.0 Trident/4.0 2 /ScriptResource.axd NOT IE NOT Trident 1
    <noscript>
        <meta http-equiv=Refresh content="0; URL=/ErrorPage.aspx?Error=NoJavascript">
    </noscript>