首页  >  文章  >  web前端  >  为什么 iOS 6 Safari 即使使用“no-cache”标头也会缓存我的 $.ajax 调用?

为什么 iOS 6 Safari 即使使用“no-cache”标头也会缓存我的 $.ajax 调用?

Susan Sarandon
Susan Sarandon原创
2024-11-05 04:18:02523浏览

Why Does iOS 6 Safari Cache My $.ajax Calls Even With `no-cache` Headers?

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn