Sitecore MVC - gzip 压缩错误

3

在使用Sitecore MVC 3渲染和GZip内容压缩时,我遇到了一个问题。

我按照John West的博客文章如何启用Sitecore中的MVC进行操作。

到目前为止,它完美地工作,页面已经被渲染。但是如果我在IIS上运行该页并启用内容压缩(gzip),则该页无法加载。在Firefox中,我会收到“内容编码错误”的提示。其他浏览器显示各种错误消息。

有人遇到过类似的问题吗?您有任何想法可能出现了什么问题?我必须在页面上使用压缩。

我们正在使用Sitecore 6,更新5:“Sitecore 6.6.0 rev. 130404” 这可能是Sitecore的一个bug吗?

编辑1:我还在Sitecore实例上运行ASP.NET WebForms,并且即使在gzip压缩下也可以正常工作。

编辑2:我已启用“dynamicCompressionBeforeCache”。我的web.config相关gzip配置如下:

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
  <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
  <dynamicTypes>
    <add mimeType="text/*" enabled="true" />
    <add mimeType="message/*" enabled="true" />
    <add mimeType="application/javascript" enabled="true" />
    <add mimeType="*/*" enabled="false" />
  </dynamicTypes>
  <staticTypes>
    <add mimeType="text/*" enabled="true" />
    <add mimeType="message/*" enabled="true" />
    <add mimeType="application/javascript" enabled="true" />
    <add mimeType="*/*" enabled="false" />
  </staticTypes>
</httpCompression>
<urlCompression doStaticCompression="true" doDynamicCompression="true" dynamicCompressionBeforeCache="true" />

请将您的gzip配置放置在web.config中。 - Bartłomiej Mucha
2个回答

5

Sitecore确认他们可以重现这个问题。当设置dynamicCompressionBeforeCache="true"时,由于某种原因,编码无法正常工作。

一种解决方法是删除这个设置。在应用dynamicCompressionBeforeCache="false"之后,它可以正常工作。


你曾经成功地使用MVC压缩吗?我遇到了同样的问题。 - Jay S
1
是的,压缩现在基本上运行良好,但我不得不将设置设为false:dynamicCompressionBeforeCache="false"。 - Tamas Molnar
我遇到了一个问题,当我启用Gzip时,我使用Sitecore创建的包会被创建为损坏文件。但是,在UrlCompression标签中添加dynamicCompressionBeforeCache="false"可以解决我的问题。 - Aakash Shah
这对我有用 - Sitecore 8 MVC相同的问题 - jwsadler

2

你应该在web.config中启用gzip。

<system.webServer>
  <httpCompression directory="%SystemDrive%\inetpub\
temp\IIS Temporary Compressed Files">
    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/>
    <dynamicTypes>
      <add mimeType="text/*" enabled="true"/>
      <add mimeType="message/*" enabled="true"/>
      <add mimeType="application/javascript" enabled="true"/>
      <add mimeType="*/*" enabled="false"/>
    </dynamicTypes>
    <staticTypes>
      <add mimeType="text/*" enabled="true"/>
      <add mimeType="message/*" enabled="true"/>
      <add mimeType="application/javascript" enabled="true"/>
      <add mimeType="*/*" enabled="false"/>
    </staticTypes>
  </httpCompression>
  <urlCompression doStaticCompression="true" doDynamicCompression="true"/>
</system.webServer>

这里有几个技巧 设置asp.net中的gzip压缩


谢谢您的回答!我已经在web.config中添加了"urlCompression"元素。我尝试添加httpcompression部分,但没有任何变化。顺便说一下,WebForms页面工作正常,并且可以正确压缩。我在您提供的链接中没有找到其他信息。 - Tamas Molnar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接