ASP.NET Response.Cache.SetNoStore () против Response.Cache.SetNoServerCaching () - PullRequest
6 голосов
/ 25 ноября 2011

Может кто-нибудь разбить, что эти два метода делают на уровне HTTP.

Мы имеем дело с кэшированием краев Akamai, и нам сказали, что SetNoStore () вызовет исключение может, так что (например)страницы всегда будут публиковаться на исходном сервере.Согласно {guy}, он устанавливает заголовок HTTP:

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

. Когда я вносил это изменение в наши формы, я обнаружил SetNoServerCaching ().Что ж, кажется, это имеет смысл с точки зрения семантики, и в документации говорится: «Явно запрещает кэширование документа на сервере origin.»

Так что я спустился в море море моречтобы увидеть то, что я мог видеть, увидеть, увидеть.Я попробовал оба эти метода и просмотрел заголовки в Firebug и Fiddler.

И из того, что я могу сказать, оба этих метода устанавливают один и тот же заголовок Http.

Может кто-нибудь объяснить, существуют ли реальные различия между этими методами и, если да, где скрываются в httpответ?!

Ответы [ 2 ]

6 голосов
/ 26 ноября 2011

Существует несколько отличий,

SetNoStore, по существу, останавливает браузер (и любой сетевой ресурс, такой как CDN) от сохранения любой части ответа или запроса, включая сохранение во временные файлы.Это установит заголовок NO-STORE HTTP 1.1

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.Вы, вероятно, не хотите без кэширования или без хранения, поскольку это приведет к повторному поиску в каждом HIT, поэтому, по сути, вы сводите на нет любые преимущества, которые CDN приносит вам, за исключением того, что они могут иметь более быстрое магистральное соединение с конечным пользователем, чем ваш текущий провайдер.но это было бы незначительным.

5 голосов
/ 25 ноября 2011

Разница между этими значениями равна

HttpCachePolicy.SetNoStore () или Response.Cache.SetNoStore: Запрещает браузеру кэшировать страницу ASPX.

HttpCachePolicy.SetNoServerCaching или Response.Cache.SetNoServerCaching: Останавливает все кэширование исходного сервера для текущего ответа.Явно запрещает кэширование документа на origin-сервере.После установки все запросы на документ полностью обрабатываются.

При вызове этих методов кэширование не может быть повторно включено для текущего ответа .

...