1

上周我们在我们的网站上遇到了一个奇怪的问题,这似乎是一个缓存问题。我们页面的一个版本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 来做到这一点,或者有更好的方法来处理这种情况?

4

1 回答 1

2

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

于 2012-11-29T23:31:25.153 回答