ASP.NET Response.Cache.SetNoStore()対Response.Cache.SetNoServerCaching()

HTTPレベルでこれらの2つの方法が何をするかは誰でも分かります。

我々はアカマイのエッジキャッシングを扱っており、SetNoStore()は排除を引き起こし、フォームページは常に元のサーバーにポストバックするようになっていると言われています。 {guy}によると、これはHTTPヘッダーを設定します:

Cache-Control: "no-cache, no-store"

この変更を私のフォームに実装していたとき、私はSetNoServerCaching()を見つけました。それは意味論的にもう少し意味をなさないように思えますし、ドキュメントは、"元のサーバー上のドキュメントのキャッシュを明示的に拒否しています "と述べています。

そこで私は海の海の海に行って、私が見ることができるものを見ました。私はこれらの方法の両方を試み、FirebugとFiddlerのヘッダーを見直しました。

そして私が知ることから、これらの方法は全く同じHttpヘッダーを設定します。

誰も、これらの方法の間に実際の違いがあるかどうかを説明することができますか?もしそうなら、どこでHTTP応答に隠れているのですか?

6

2 答え

いくつかの違いがありますが、

SetNoStore, essentially stops the browser (and any network resource such as a CDN) from saving any part of the response or request, that includes saving to temp files. This will set the NO-STORE HTTP 1.1 header

SetNoServerCachingは、基本的にサーバーのファイル保存を停止します。ASP.NETには、データのみ、部分的な要求、フルページ、SQLデータなど、いくつかのレベルのキャッシュが存在します。この呼び出しは、HTTP(完全および部分)要求がサーバーに保存されるのを停止する必要があります。このメソッドは、キャッシュ制御ヘッダーを設定しないでください。

もあります

Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetMaxAge(new TimeSpan(1, 0, 0));

キャッシュを設定する方法として、content-expiresヘッダーを設定します。

CDNの場合、おそらくcontent-expiresヘッダーを設定して、新しいコンテンツをいつ取得するのかCDNが知っているのか、HITを取得するのかを知りたいと思うでしょう。あなたはおそらく、no-cacheまたはno-storeを望まないでしょう。これは、HITごとに再フェッチを引き起こすので、CDNがあなたに与える利益を無効にしているのです。ただし、現在のISPよりもエンドユーザへの高速なバックボーン接続しかし、それは限界がある。

6
追加された
私は自分のセットアップでそれをチェックし、SetNoSeo urverCachingのためのno-store、no-storeをSetNoStoreだけに設定しませんでした。どのバージョンの.NETを使用していますか?
追加された 著者 John Mitchell,
ありがとう、これは彼らが「意味する」ものの良い説明ですが、私は彼らが何をしているのかについての説明を探しています - つまり、両方のメソッドがCache-Controlヘッダーを全く同じ値に設定するのはなぜですか?いいえストア? SetNoStoreはCDN /エッジキャッシング(ミドルウェアのソート)を停止するための正しいオプションであると思われますが、SetNoServerCachingはオリジンサーバー(IIS/ASP.NET)キャッシングのみを参照します。
追加された 著者 misteraidan,
興味深いことに、このヘッダーがApp(.NET 4.0、Sitecore 6.1)のどこかに設定されている可能性があります。さらなる調査をするかもしれない。
追加された 著者 misteraidan,

両者の違いは

HttpCachePolicy.SetNoStore() or Response.Cache.SetNoStore: Prevents the browser from caching the ASPX page.

HttpCachePolicy.SetNoServerCaching or Response.Cache.SetNoServerCaching: Stops all origin-server caching for the current response. Explicitly denies caching of the document on the origin-server. Once set, all requests for the document are fully processed.

これらのメソッドが呼び出されると、現在のレスポンスに対してキャッシュを再度有効にすることはできません

5
追加された
反射を利用して SetNoStore を元に戻すこともできますし、同様に極端に SetNoServerCaching することもできますリクエストライフサイクルを簡単に制御できない場合があります。
追加された 著者 SliverNinja - MSFT,