2009-08-05 17 views
1

jQueryを使用して、サーバーからJSONデータを取得しています。 POST動詞を使用していますが、WebMethod CacheDuration属性を設定しても、JSONはキャッシュされません。asmx asp.netのPOSTリクエストでのWebMethodキャッシュ

私はfirebugで応答ヘッダーをチェックし、Cache-Controlはno-cacheに設定されています。 どうすればこれらの要求をクライアントにキャッシュし、毎回サーバーにヒットするのを避けることができます。

UPDATE

scottGuからこのpostを読んだ後、私はPOSTリクエストを使用するために行くのが安全だっただろうと思いました。彼の投稿は、私がやろうとしている操作の種類には当てはまりませんか? (サーバーを変更せずにデータを取得する)。実際に動詞をGETに変更した後も、私はWebサービスに到達していません...

+0

AJAX WebメソッドはデフォルトでHTTP GET要求を有効にしないため、次の属性が必要です。[ScriptMethod(UseHttpGet = true)] – redsquare

+0

質問に答えましたか? –

答えて

3

getリクエストを使用する必要があります。ポストはデフォルトではキャッシュされません。 .ajax()を使用し、キャッシュをtrueに設定して入力して投稿することで、キャッシュへの投稿を取得できます。私はこれが通常あなたがキャッシュに投稿を期待しないように動作するとは言えません。 getを使うことをお勧めします。

例えば

$.ajax({ url: '/bla', 
      type : 'post', 
      data : dataObj, 
      cache : true }); 
+0

私はそれをしましたが、私はwebmethodにアクセスできません。 – ak3nat0n

+1

AJAX Webメソッドは、デフォルトでHTTP GETリクエストを有効にしないので、次の属性が必要です。[ScriptMethod(UseHttpGet = true)] – redsquare

+0

Getを使用してキャッシュされていないものが解決されず、CacheDurationを使用するとサーバークライアント側のキャッシュではないサイドキャッシュ – Peter

1

あなたがキャッシュを使用する場合、代わりにGETキーワードを使用します。 SOについても同様の質問があります。

0

私は、キャッシングパラメータがクエリ文字列パラメータか(私の場合はASP.NET MVCの)ルートパラメータのどちらであるかに応じて、ASP.NETキャッシュレスポンスの違いに気付きました。

私は条件を正確に把握したことはありませんが、これは誰かを助けるかもしれません。

関連する問題