Safari 缓存 $.ajax 在 iOS 6 上的结果:分析
自 iOS 6 发布以来,人们开始担心 Safari 的 Web 视图缓存 $ .ajax 调用。尽管显式将缓存属性设置为“false”,但意外的缓存行为仍然存在,特别是对于具有始终接收相同输入参数的静态函数签名的 POST 方法。
根本原因
调查显示,iOS 6 上的 Safari 会缓存缺少 Cache-Control 标头或包含“Cache-Control: max-age=0”的 POST 请求。这与其他尊重 POST 响应不可缓存性的浏览器不同。
解决方法
要防止全局缓存,唯一有效的解决方案是设置“Cache-Control” :无缓存。”此标头明确不允许缓存。
示例
Apache 配置
要在 Apache 中实现此解决方法,将以下行添加到您的配置文件中:
Header set Cache-Control "no-cache"
或者,仅限制此行为POST 请求:
SetEnvIf Request_Method "POST" IS_POST Header set Cache-Control "no-cache" env=IS_POST
附加说明
值得注意的是,缓存仅在 POST 请求参数和 URL 保持不变时才会发生。在 URL 或 POST 负载中引入随机数据可以规避缓存问题。
以上是为什么 iOS 6 上的 Safari 会缓存 $.ajax POST 请求,即使是在 cache=false 的情况下?的详细内容。更多信息请关注PHP中文网其他相关文章!