Как браузер работает с заголовками срока действия, заголовками контроля кэша, последним измененным заголовком? - PullRequest
6 голосов
/ 22 апреля 2010

Я веб-разработчик, работал с PHP и .NET. Имея более года опыта работы в сети, я не смог полностью разобраться в функциях кэширования браузера, я надеюсь, что веб-гуру помогут мне в этом. У меня есть следующие вопросы:

  • Как браузер на самом деле кеширует вещи, запрашивает ли он, изменился ли кэшированный файл на сервере или нет,
  • Каков идеальный способ для разработчика использовать кеширование браузера в полной мере, а также иметь возможность вносить новые изменения на сайте без каких-либо проблем. Я думаю, что если браузер каким-то образом кеширует мои CSS, JS и изображения, а затем просто проверяет их модификацию на сервере каждый раз, это может решить проблему. но я не уверен, как это сделать.

Ответы [ 3 ]

4 голосов
/ 22 апреля 2010

Это сообщение в блоге может помочь:

http://blog.httpwatch.com/2007/12/10/two-simple-rules-for-http-caching/

Объясняет, как использовать кэширование, сохраняя при этом возможность вносить изменения при необходимости.

2 голосов
/ 22 апреля 2010

Для CSS-файлов стандартным «обходным путем» является постепенное добавление параметра к ссылке:

<link rel="stylesheet" href="http://mysite.com/styles.css?v=1">
<link rel="stylesheet" href="http://mysite.com/styles.css?v=2">
...

Это заставит браузер перезагрузить файл.

0 голосов
/ 13 марта 2013

Если вы используете язык на стороне сервера, вы можете заставить браузер снова загрузить файл.

<script src="script.js?<?= uniqid(); ?>">
<img src="myfile.jpg?<?= uniqid(); ?>">

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

Существует еще один способ управления тем, что необходимо кэшировать, Кэш приложения HTML5 , дамп логики кэша в файл манифеста. Таким образом, каждый файл в вашем манифесте не будет загружен снова, пока сам файл манифеста не будет изменен.

Просто помните, что если вы что-то изменили в файле JS, CSS, изображения, и вам нужно передать это изменение повторяющимся посетителям, вам также необходимо обновить файл манифеста. Вы можете добавить, например, дату публикации, чтобы браузер знал, что это новый манифест, и он снова загрузит все.

...