Подтвердить что ты не робот

OutputCache в моем веб-приложении asp.net mvc. Множественный синтаксис для предотвращения кеширования

Я работаю над веб-приложением ASP.NET ASP.NET, и мне нужно знать, существуют ли какие-либо различия при определении OutputCache для моих методов действий, как показано ниже: -

[OutputCache(Duration = 0, Location = OutputCacheLocation.Client, VaryByParam = "*")]

VS

[OutputCache(NoStore = true, Duration = 0, Location="None", VaryByParam = "*")]

VS

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]

Будут ли все указанные выше три параметра запрещать кеширование данных, или каждый из них имеет различный смысл?

Второй вопрос В чем основное отличие между определениями duration=0 и NoStore=true? обе из них будут препятствовать кешированию? Благодаря

4b9b3361

Ответ 1

Свойство NoStore используется для информирования прокси-серверов и браузера о том, что они не должны хранить постоянную копию кэшированного содержимого, установив Cache-Control: no-store в заголовок запроса.

Продолжительность просто указывает, как долго должно быть кэшировано содержимое действия контроллера, например. 10 секунд. Это установит Cache-Control: max-age в >= 0. И также устанавливает заголовок Expires в допустимую временную метку.

К вашему первоначальному вопросу, нет, три варианта не имеют того же значения.

[OutputCache(Duration = 0, Location = OutputCacheLocation.Client, VaryByParam = "*")]

создайте заголовок кэша, подобный этому

Cache-Control: private, max-age=0
Expires: Fri, 03 Jan 2014 12:32:15 GMT

[OutputCache(NoStore = true, Duration = 0, Location="None", VaryByParam = "*")]

создает следующий заголовок кэша:

Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: -1

Это в основном то, что вы хотите увидеть, если хотите предотвратить кеширование всеми средствами. VaryByParam является необязательным (по крайней мере, в MVC5), и по умолчанию это "*", так что вы можете просто использовать [OutputCache(NoStore = true, Location = OutputCacheLocation.None)] вместо этого.


[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]

даже создает общий контроль кеша...

Cache-Control: public, no-store, max-age=0
Expires: Fri, 03 Jan 2014 12:36:38 GMT

В SO есть хорошая публикация, в которой обсуждается разница между max-age = 0 и no-cache и т.д..

В конце все три могут предотвратить кеширование ваших данных, но все еще имеют разные значения.