2012-03-14 108 views
2

我目前正在對asp.net網站爲移動設備,使用jqMobile。 如果我在桌面瀏覽器中打開網站(鉻,歌劇)或「Opera移動」一切工作正常,但本地瀏覽器顯示奇怪的行爲:
在第一次登錄一切正常,但如果我嘗試重新登錄,或刷新信息頁面(通過Ajax請求) - 我收到老的效果,也有對處理沒有請求實際上sended。 (在Android 2.3.3仿真器相同的行爲)的Android(2.3.3)原生瀏覽器問題處理

我怎麼能強迫瀏覽器發送請求,以獲得實際的數據?

+0

禁用緩存。 – Aristos 2012-03-14 11:33:55

回答

1

移動有更積極的政策來緩存一些網頁,所以有兩種方式,迫使它reaload。

一種方式在每個Ajax調用的末尾添加一個隨機數,並調用頁面例如爲:/mypage?id=23&random=88374891

這可以自動jQuery的Ajax的使用cache:false進行調用。例如:

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

方式二是用頭,以強制頁面不停留在移動緩存,但再次readed禁用任何可能的緩存。這裏是一組禁用所有可能的緩存:

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"); 

希望這個幫助。