MVC - управление кешем не работает для статического контента - PullRequest
0 голосов
/ 10 декабря 2018

В нашем приложении мы хотели бы кэшировать статическое содержимое, например изображения, CSS и т. Д. Из соображений безопасности мы добавили заголовки HTTP как -

<httpProtocol>
  <customHeaders>
    <!-- Add custom headers to not allow the page content to be cached -->
    <add name="Cache-Control" value="no-cache, no-store, must-revalidate" />
    <add name="Pragma" value="no-cache" />
    <add name="Expires" value="0" />
  </customHeaders>
</httpProtocol>

. Теперь предполагалось проверить запрос и использовать кеш.если это подтверждено.Но это не работает.Даже по одному и тому же запросу он снова и снова загружает статическое содержимое.

Я попытался добавить пользовательский код в конфигурацию следующим образом

<staticContent>
  <clear/>
  <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="00:10:00" />
  <mimeMap fileExtension=".jpg" mimeType="image/jpg"/>
  <mimeMap fileExtension=".png" mimeType="image/png"/>
  <mimeMap fileExtension=".css" mimeType="text/css"/>
  <mimeMap fileExtension=".js" mimeType="text/javascript"/>
</staticContent>

Все равно это не работает.

Я не хочу использовать кэш вывода.

Есть ли какая-либо опция?

1 Ответ

0 голосов
/ 10 декабря 2018

no-store полностью отключает кэш Ссылка MDN # 1 , Ссылка MDN # 2

Как я понимаю, вам нужен только один заголовок:

<add name="Cache-Control" value="no-cache" />

При первой загрузке браузер загружает ресурс: enter image description here Код состояния уведомления - 200, а размер ответа - 8 КБ.Сервер должен добавить (IIS делает это автоматически) * Заголовок Etag (например, Etag: "8099f82b154d41:0"). Затем браузер кэширует файл и сохраняет значение Etag.На следующей странице браузер перезагружает это значение в виде If-None-Match заголовка запроса (например, If-None-Match: "8099f82b154d41:0").Сервер проверяет значение и, если файл не изменен, отвечает http-кодом 304: enter image description here Код состояния уведомления - 304, а размер ответа - 117 B. В этом случае используется кэшированный файл.

Если файл будет изменен на сервере, сервер ответит новым файлом и 200 http-кодом, кеш не будет использоваться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...