我目前正在使用jqMobile在移动设备的asp.net网站上工作。
如果我在桌面浏览器(Chrome,Opera)或“Opera Mobile”中打开网站,一切正常,但本机浏览器显示奇怪的行为:
在第一次登录时一切都很好,但如果我尝试重新登录,或刷新页面上的信息(通过ajax请求) - 我收到旧的结果,也没有请求处理程序实际发送。
(在android 2.3.3模拟器上的相同行为)
如何强制浏览器发送请求以获取实际数据?
答案 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");
希望得到这个帮助。