1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

科技 iOS6又爆Bug - Safari缓存POST的Ajax请求结果

Discussion in '新闻聚焦' started by 漂亮的石头, 2012-10-15.

  1. 漂亮的石头

    漂亮的石头 版主 Staff Member

    Joined:
    2012-02-10
    Messages:
    488,399
    Likes Received:
    48
    感谢糖醋小S的投递
    近期许多开发人员发现他们的web应用在iOS6下发生一些奇怪的问题,许多用POST实现的诸如用户登陆、请求即时结果的功能在iOS6的Safari下都被缓存了,导致无法切换用户,无法获取最新的即时信息等。
    众所周知,POST这种非等冪请求的返回结果在HTML规范中,除非特别声明需要缓存,否则默认是不被浏览器缓存的,而iOS6中返回的json或者xml都是被缓存过的内容。我们有理由相信这是iOS6中的一个小Bug,但是对于开发人员来说却是噩梦。

    据了解iOS6中Safari的缓存机制如下:
    • 没有 Cache-Control 或者 Expires headers = iOS6 Safari 会缓存
    • Cache-Control max-age=0 或者 immediate Expires = iOS6 Safari 会缓存
    • Cache-Control: no-cache = iOS6 Safari 会缓存

    所以当前开发人员可以做的就是将所有有POST请求的地方以及返回的内容部分加入no-cache声明。
     
Loading...