iOS 6 Safari:缓存 $.ajax 调用
iOS 6 中的 Safari 网页视图已被观察到缓存 $.ajax 调用,甚至当明确指定不这样做时。这种奇怪的行为已经在使用 Safari WebView 的 PhoneGap 应用程序中遇到过。
缓存问题的原因
调查显示 Safari 缓存了 POST 请求,缺少 Cache-Control 标头或包含标头“Cache-Control: max-age=0”。此行为源于对 HTTP 规范的解释,该规范规定可以使用适当的标头来缓存 POST 响应。
解决方案
为了防止缓存,Cache-Control标头应设置为“无缓存”。这可以在 Apache 配置中全局实现,使用:
Header set Cache-Control "no-cache"
对于 POST 请求,可以使用以下命令应用相同的设置:
SetEnvIf Request_Method "POST" IS_POST Header set Cache-Control "no-cache" env=IS_POST
或者,解决方法是修改函数签名:
getNewRecordID(intRecordType, strTimestamp)
通过向函数签名添加时间戳参数,请求会随着每次调用而有效更改,从而防止缓存。
以上是为什么 iOS 6 Safari 即使使用“no-cache”标头也会缓存我的 $.ajax 调用?的详细内容。更多信息请关注PHP中文网其他相关文章!