【问题标题】:configuring IIS to cache based on content-type?将 IIS 配置为基于内容类型进行缓存?
【发布时间】:2012-11-29 20:35:43
【问题描述】:

上周我们的网站出现了一个奇怪的问题,似乎是缓存问题。我们页面的一个版本被缓存,并在标题中设置了Content-Type: text/vnd.wap.wml; charset=utf-8

经过一番研究,我发现asp .net 使用%SystemRoot%\Microsoft.NET\Framework\versionNumber\CONFIG\Browsers 路径中的.browser 文件来确定某些用户代理的首选mime 类型。基于上面的内容类型,看起来诺基亚手机是第一个在基于上面的内容类型清除缓存后访问我们页面的应用程序,并且 asp 存储了具有该内容类型的页面的缓存版本,而不是text/html。该内容类型的问题是浏览器无法识别它,只会将页面显示为纯文本。

我可以验证上述情况是否是原因。我从我们的池中取出我们的一台服务器,回收该站点的应用程序池并重置 iis,然后使用 fiddler 访问页面并将跟随标头作为 GET 传递到我们的主页。

Accept: text/html
User-Agent: NokiaN90-1/3.0545.5.1 Series60/2.8 Profile/MIDP-2.0 Configuration/CLDC-1.1

这在响应中按预期返回了以下内容类型:

Content-Type: text/vnd.wap.wml; charset=utf-8

现在为了解决这个问题,asp 根据它所提供的内容类型缓存页面的各种风格是有意义的,对吧?有没有办法配置 asp 来做到这一点,或者有更好的方法来处理这种情况?

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    如果您计划为不同的客户提供不同的内容类型,我相信通常您会添加 Vary: User-Agent 标头。例如。 http://msdn.microsoft.com/en-us/library/system.web.httpcachevarybyheaders.useragent(v=vs.100).aspx

    【讨论】:

    • 这实际上似乎工作得很好。在我们的 .master 文件中,我设置了一个缓存配置文件并将 Response.Cache.VaryByHeaders.UserAgent 设置为 true,我得到的正是我对各种用户代理的期望,感谢您的链接!
    猜你喜欢
    • 1970-01-01
    • 2010-09-09
    • 2011-12-28
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    • 2016-01-09
    相关资源
    最近更新 更多