5

升级到iOS6.0 版本后,ajax 登录页面停止工作。看起来 jquery $.ajax 发出的 ajax 发布请求即使在添加随机查询字符串参数并将 Cache-control 设置为“no-cache”(这些在网上找到作为缓存问题的解决方案)之后也被缓​​存在 safari 中。第一次登录尝试工作正常,但在第二次登录请求浏览器注销后,不会从服务器获得任何响应正文。只有标题。

这同样适用于 IOS 6 GM 和 5 版本以及所有桌面浏览器。

有任何想法吗?

4

2 回答 2

5

我刚刚在ars technica阅读了这篇似乎与您的问题有关的文章。这似乎是苹果在 iOS6 中对 Safari 的“过度优化”。

于 2012-09-24T12:52:20.123 回答
1

此处还详细介绍了该主题: iOS 6 上的 Safari 是否缓存 $.ajax 结果?

但是,还有一个注意事项,上述内容未涵盖。

关于 WCF 有一个有用的评论,它也适用于 ASP.NET MVC 应用程序的 SetCacheability。我建议这些调用仅限于非 GET 请求,以避免失去 GET 缓存的好处。

由于多种原因,我使用了一个 Controller 基类,我的所有控制器都从该基类继承,这很好,因为我的 Initialize 覆盖可以处理设置我的缓存标头。

public class SmartController : Controller
{
    ...
    public HttpContextBase Context { get; set; }

    protected override void Initialize(System.Web.Routing.RequestContext requestContext)
    {
        Context = requestContext.HttpContext;

        if (Context.Request.RequestType != "GET")
        {
            Context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
        }

        base.Initialize(requestContext);
        ...
    }
...
}
于 2012-11-18T22:38:08.810 回答