2

以下の2行の違いは何ですか?:

Response.Cache.SetCacheability(HttpCacheability.NoCache);

 Response.CacheControl = "no-cache";
4

2 に答える 2

5

ドキュメントを読んでも、一般的にはまったく違いはありません。

ただし、前者は Cache オブジェクト ( HttpCachePolicyBaseAsp.Net 4 または Asp.Net MVC) を使用するため、以下を提供します。

a) シナリオのテストに役立つ、応答オブジェクトのキャッシング ポリシーの抽象化

NoCacheb) 何らかの理由で HTTP 仕様が拡張され、応答でより多くのヘッダーが必要になるか、応答にその他の調整が必要になる場合の潜在的な将来の保証。

また、「キャッシュ不可」の概念をクライアントの機能に応じて透過的に適応させることもできます。これは、HTTP が進化する場合に重要ですが、HTTP 1.0 および 1.1 クライアントの場合にも重要です (1.0 と 1.1 の違いは、HTTP 1.0 と 1.1 で十分に要約されています)。

2 行目では、no-cache ディレクティブがどのように適用されるかについて責任を負っています (やや魔法の文字列を使用) - 確かに、まだテスト可能ですが、HTTP 仕様が変更された場合は、自分でコーディングする必要があります。

最終的にはResponse.Cache、ヘッダーを直接コーディングするよりも、オブジェクトを使用する方が適切な設計です (たとえば、ETag や If-Not-Modified-Since の処理では、それ自体が真価を発揮します)。

于 2012-05-09T22:53:49.117 に答える
1

このResponse.CacheControlプロパティは、下位互換性のためにのみ維持されています。それに文字列を割り当てると、Response.Cacheオブジェクトに対応する値が設定されます。

于 2012-05-09T22:53:39.037 に答える