2012-03-14 9 views
2

現在、jqMobileを使用してモバイルデバイスのasp.net Webサイトで作業しています。 デスクトップブラウザ(Chrome、Opera)または「Opera Mobile」でウェブサイトを開くと、すべて正常に動作しますが、ネイティブブラウザでは奇妙な動作が表示されます。
初めてのログインでは問題ありませんが、ページ上で(ajaxリクエストを介して) - 私は古い結果を受け取って、実際にハンドラへのリクエストは送信されません。 (android 2.3.3エミュレータと同じ動作)ハンドラーでのアンドロイド(2.3.3)ネイティブブラウザーの問題

実際のデータを取得するためにブラウザにリクエストを送信させるにはどうすればよいですか?

+0

キャッシュを無効にします。 – Aristos

答えて

1

モバイルにはいくつかのページをキャッシュするためのより積極的なポリシーがあります。したがって、強制的にロードする2つの方法があります。

一つの方法のようにページなど各AJAXコールの終了時に乱数を追加し、呼び出すことです:これは、AJAXにcache:falseを使用してjQueryので自動的に行うことができます/mypage?id=23&random=88374891

を例に呼び出します。

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

関連する問題