【发布时间】:2017-02-26 23:38:50
【问题描述】:
我最初的问题是我的网站仅在某些 iPhone 和 iPad 设备上出现回发错误。该网站适用于所有台式电脑以及大多数其他手机。该错误是特定于设备的,而不是特定于浏览器的。我在以下讨论中找到了答案-
.Net 4.0 website cannot identify some AppleWebKit based browsers
ASP.NET Ajax postback suddenly stops on IPhone/IPad
这些讨论的要点是-
“.NET 框架缓存用户代理密钥。 用户代理缓存的默认大小为 64 个字符。这意味着,.NET 将 UserAgent 字符串的前 64 个字符作为键缓存。因此,下次用户 UA 以相同 64 个字符开头的用户访问该站点时,它会映射到内存中先前存储的密钥。该网站现在对这个新用户代理的行为方式相同。
在大多数情况下,这不是问题,但偶尔会弹出一个看起来像 Safari 的用户代理,但实际上并非如此,并且没有正确解析(Mozilla 0.0 没有任何功能),但是映射仍然存储在缓存中,这意味着所有具有相同 64 个字符前缀的 UserAgent 字符串(恰好与许多普通 Safari 的前缀完全相同)现在也被错误地映射,直到该缓存条目过期。”
添加用户代理长度为 256 的 browserCaps 解决了某些设备的问题,但不适用于在 ipad/iphone 上使用 chrome 和 safari 的设备。
有没有办法清除这些缓存的用户代理?清除两个浏览器上的浏览器缓存似乎不起作用。
【问题讨论】:
标签: ios asp.net ipad caching user-agent