@capitancrazy

Почему браузер не обновляет сорцы?

Возникают часто ситуации, помогите разобраться.
К примеру, делаю участок кода, который меняет ссылку на изображение в зависимости от выбранной опции в селектбоксе. После того, как я закончил сохраняю, обновляю страницу и проверяю. Изображения не отображаются. Нахожу причину - опечатка в имени домена. Исправляю код. Обновляю страницу. Всё ещё не работает. Нахожу причину. В браузере смотрю сорцы скрипта, всё еще неисправленое имя домена. Обновляю empty cache and hard helllord. Не работает. Оставляю это дело на часик. Занимаюсь чем-то другим. Возвращаюсь к этому заданию, захожу на страницу - уже всё работает.
Что проиходит, как этого избежать?
  • Вопрос задан
  • 286 просмотров
Решения вопроса 1
copist
@copist
Empower people to give
1. Вагрантом пользуешься?

Выключи sendfile в Nginx и Apache

если nginx - в файле /etc/nginx/nginx.conf и поменяй опцию
sendfile off

если Apache - в зависимости от операционной системы - найди httpd.conf или apache.conf и поменяй опцию EnableSendfile off

2. Заголовки Expiration устанавливаешь?
Это на самом деле хорошая практика, но в разработке мешает
Попробуй сделать так: на продакшене заведи файл VERSION.txt и записывай туда номер версии (например, 1.0) в тот момент, когда обновление выкатываешь. У себя такой файл не держи.
Когда подключаешь CSS к странице, то проверяй наличие такого файла. Если файла нет, то ставь текущую метку времени.

Пример на PHP
<?php
$versionPath = 'path/to/VERSION.txt';
$version = is_file($versionPath) ? file_get_contents($versionPath) : time();
?>
<link rel="stylesheet" href="/path/to/style.css?v=<?php echo $version ?>">


На продакшене у тебя будет ссылка на CSS с фиксированной версией вида
<link rel="stylesheet" href="/path/to/style.css?v=1.0">


А на твоей машине будет всегда уникальный URL, который будет свежим, даже если заголовок Expiration выставлен.
<link rel="stylesheet" href="/path/to/style.css?v=1494560580">


То же самое - для JS и файлов изображений. Метка версии решает много проблем как у тебя, так и у пользователей твоего сайта после выкатки обновления на сервер.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Кэш
[править | править вики-текст]Материал из Википедии — свободной энциклопедии
У этого термина существуют и другие значения, см. Кэш (значения).
Кэш[1][2][3][4] или кеш[5][6][7] (англ. cache, от фр. cacher — «прятать»; произносится [kæʃ] — «кэш») — промежуточный буфер с быстрым доступом, содержащий информацию, которая может быть запрошена с наибольшей вероятностью. Доступ к данным в кэше осуществляется быстрее, чем выборка исходных данных из более медленной памяти или удаленного источника, однако её объём существенно ограничен по сравнению с хранилищем исходных данных.


В браузерах есть хоткеи для перезагрузки с игнором кеша - ctrl+F5 или ctrl+R.
У серверов есть заголовки: html5.by/blog/cache
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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