Можно ли управлять кешированием через HTTP-заголовки без использования хэш-имен для файлов активов?

Я читаю его в Документы в Интернете :

  

Как он работает, есть ловушка: если мы не будем менять имена файлов наших ресурсов при развертывании новой версии, браузер может подумать, что он не обновлен, а клиент получит кешированную версию.

Мне любопытно, нужно ли использовать этот механизм с уродливыми именами файлов main.55e783391098c2496a8f.js для активов, чтобы сообщить браузеру, что файл актива изменился?

Можно ли управлять только заголовками HTTP? В стандарте есть несколько заголовков HTTP, чтобы контролировать, как браузер кэширует активы, например:

Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
Date: Wed, 24 Aug 2020 18:32:02 GMT
Last-Modified: Tue, 15 Nov 2024 12:45:26 GMT
ETag: x234dff
max-age: 12345

Могу ли я использовать эти заголовки в одиночку? Или мне еще нужно беспокоиться о хэш-части в именах файлов main.55e783391098c2496a8f.js?

3 голоса | спросил Green 2 Jpm1000000pmMon, 02 Jan 2017 16:53:44 +030017 2017, 16:53:44

3 ответа


1

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

Файлы, на которые вы ссылаетесь, автоматически сгенерированы, поэтому я не вижу причин, по которым вас будет «беспокоить», это просто имена файлов, которые вам не нужны ни вам, ни вашим посетителям.

Если это действительно проблема для вас, счастливой средой может быть сохранение «приятного» имени и короткое завершение дня или двух. Таким образом, различные загрузки страниц в сеансе не будут заставлять файлы повторно загружаться, но если они вернутся через несколько дней, они обязательно получат последнюю версию.

ответил DisgruntledGoat 3 Jpm1000000pmTue, 03 Jan 2017 23:00:32 +030017 2017, 23:00:32
1

Вам действительно не нужно использовать hashname в ваших активах (js или css), браузер узнает об изменении файла из вашего ETAG .

Возможно, этот ответ также поможет вам .

ответил Goyllo 4 Jpm1000000pmWed, 04 Jan 2017 22:16:11 +030017 2017, 22:16:11
0

Хорошо, если вы скажете, что он никогда не кэшируется, ничто никогда не будет кэшироваться. Поэтому вам нужно изменить имя файла, но оно не должно быть таким же уродливым, как вы показываете. Для некоторых клиентов я добавляю дату изменения, например: main-01012017.js

ответил Rob 2 Jpm1000000pmMon, 02 Jan 2017 17:28:14 +030017 2017, 17:28:14

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132