android(2.3.3)处理程序的本机浏览器问题

时间:2012-03-14 11:24:49

标签: android asp.net jquery jquery-mobile

我目前正在使用jqMobile在移动设备的asp.net网站上工作。 如果我在桌面浏览器(Chrome,Opera)或“Opera Mobile”中打开网站,一切正常,但本机浏览器显示奇怪的行为:
在第一次登录时一切都很好,但如果我尝试重新登录,或刷新页面上的信息(通过ajax请求) - 我收到旧的结果,也没有请求处理程序实际发送。 (在android 2.3.3模拟器上的相同行为)

如何强制浏览器发送请求以获取实际数据?

1 个答案:

答案 0 :(得分:1)

移动设备有更积极的策略来缓存某些页面,因此有两种方法可以强制它进行自动加载。

单向是在每个ajax调用结束时附加一个随机数,并调用页面,例如:/mypage?id=23&random=88374891

这可以通过jQuery使用ajax调用上的cache:false自动完成,例如:

    jQuery.ajax({
        url: FinalCall,
        type: "GET",
        dataType: 'html',
        cache: false,
        success: function(data) 
    {

第二种方式是使用标头禁用任何可能的缓存,强制页面不会停留在移动缓存上,而是再次重新启动。这是一个禁用所有可能缓存的集合:

Response.Cache.SetExpires(DateTime.UtcNow.AddYears(-4));
Response.Cache.SetValidUntilExpires(false);
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
Response.Cache.SetNoStore();

Response.ExpiresAbsolute = DateTime.Now.Subtract(new TimeSpan(1, 0, 0, 0));
Response.Expires = 0;
Response.CacheControl = "no-cache";
Response.AppendHeader("Pragma", "no-cache");

希望得到这个帮助。