gpt4 book ai didi

c# - 在手机上禁用缓存

转载 作者:太空宇宙 更新时间:2023-11-03 16:20:12 26 4
gpt4 key购买 nike

我正在用 c# 创建一个 asp.net web 应用程序,在 iPhone 4 和 5 上查看页面时遇到了一个小问题(不确定其他手机,因为我没有收到其他移动用户的报告)。

在桌面浏览器上查看页面时,一切正常。发生的情况是用户在文本框中输入他们的电子邮件地址并单击按钮。我在按钮上有一些 Javascript JQuery,它通过 ajax 调用网络方法,网络方法返回 json 中的 ID 和名称列表 - 然后按钮使用此信息填充网页上的下拉框。

用户可以通过站点的不同部分将信息添加到数据库中,当他们单击上面的按钮时,返回的列表应该更大并包含新信息。但是我在 iphone 5 上注意到,当我回到页面时,ajax 调用似乎没有发生(发生时它会短暂显示一个弹出窗口)并且下拉框不包含数据库中的新信息。我相信它只是显示来自手机缓存的信息。

如果我进入 safari 设置并删除 cookie 和数据/网络数据,然后转到该网页,瞧,所有下拉列表都已填充并且 ajax 调用有效(请等待弹出窗口显示)。我已尝试将以下代码行添加到 page_load 上的母版页,但没有成功。

Response.Cache.SetNoStore();

还有什么我需要做的吗?正如我所说,该网站适用于桌面浏览器,而且我不是移动开发人员(我什至不使用手机浏览网页)所以不确定问题是什么或如何在我的代码中修复它。

非常感谢您的帮助/建议。

最佳答案

您认为这与缓存相关的理论是正确的 - iOS 6 在没有提供缓存控制 header (包括 POST)的情况下更积极地缓存。参见 Is Safari on iOS 6 caching $.ajax results?了解更多信息。

我们遇到了同样的问题,我们为此采取的方法是向网站添加一个 HttpModule,它始终为任何 POST 请求设置此 header :

public class DisablePostCachingModule : IHttpModule
{
private HttpApplication _context;
public void Init(HttpApplication context)
{
_context = context;
_context.PreSendRequestHeaders += OnPreSendRequestHeaders;
}

public void Dispose()
{
}

private void OnPreSendRequestHeaders(object sender, EventArgs e)
{
if (HttpContext.Current.Request.HttpMethod == "POST")
{
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
}
}
}

我们将其连接到 Web.config 中,如下所示,它为我们完成了任务:

<configuration>
<system.webServer>
<modules>
<add name="DisablePostCachingModule" type="Full.Namespace.To.DisablePostCachingModule, AssemblyName" />
</modules>
</system.webServer>
</configuration>

请注意,如果您不使用 IIS7 的集成模式,您可以使用 <system.web>相反:

<configuration>
<system.web>
<httpModules>
<add name="DisablePostCachingModule" type="Full.Namespace.To.DisablePostCachingModule, AssemblyName" />
</httpModules>
</system.web>
</configuration>

显然,在上述两种情况下,您都需要更新 Full.Namespace.To到你为模块使用的任何命名空间,和AssemblyName到模块所在程序集的名称。例如:

<add name="DisablePostCachingModule" type="Acme.HttpModules.DisablePostCachingModule, Acme.Core" />

关于c# - 在手机上禁用缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14274758/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com