Отключите кэширование при обслуживании статических файлов с Nginx (для разработки)

Linux автоматически файлы кэшей, считанные из диска. Тот кэш называют буферами. Буферы будут выпущены, если Ваша программа захочет больше памяти, и ничто больше не свободно.

Я не знаю то, что означает кэшируемая подкачка.

Править: Я погуглил вскоре для подкачки и видел следующее: http://www.linux-tutorial.info/modules.php?name=MContent&pageid=314

Кажется, что кэшируемая подкачка означает все страницы в подкачке, которые перезагружаются в память, но неизменные с тех пор. Эти страницы в подкачке уже допустимы и если страница выгружается позже снова, Linux не должен писать им на самом деле в диск.

89
задан 26 December 2013 в 16:58
5 ответов

установите Ваш, истекает тег к

expires off;

и это не должно устанавливать, любой истекает заголовки вообще, это могли также быть Ваши файлы кэширования браузера неправильно

15
ответ дан 28 November 2019 в 19:23
  • 1
    В Windows, " истекает off" все еще doesn' t отключают кэширование файлов HTML. Супер разбивая, когда я обновляю файл в своем IDE, но! $ # луг % nginx служит старой версии. –  Dan Dascalescu 31 October 2014 в 04:59

Это поздно, но все еще помечено как неотвеченное, поэтому я приму удар. Просто для смеха, пробовали ли вы:

location ~* \.(css|js)$ {
    expires 0;
    break;
}

Сам не пробовал, но научился пробовать такие вещи с Nginx в серверном контейнере время от времени, когда у меня возникают проблемы, подобные этой ...

1
ответ дан 28 November 2019 в 19:23

Поскольку ответ каким-то образом скрыт в вопросе - вот решение для nginx в среде VirtualBox в качестве отдельного ответа.

В вашей конфигурации nginx (обычно /etc/nginx/nginx.conf) или в файле конфигурации vhost измените параметр sendfile в off :

sendfile  off;

Хотя sendfile лежит в основе славы Nginx (молниеносная эффективность низкоуровневого статического обслуживания файлов), он может быть вред для местного развития, например Javascripts, которые часто меняются и требуют перезагрузки. Тем не менее, sendfile Nginx умен и, вероятно, не проблема большинства людей; проверьте также параметр вашего браузера «отключить кеш»!

57
ответ дан 28 November 2019 в 19:23

Если ничего из упомянутого выше не помогает, но Nginx по-прежнему возвращает старое содержимое ваших файлов, это может быть проблема, связанная с open_file_cache .

См. Ссылку:

2
ответ дан 28 November 2019 в 19:23

Это старая ошибка в VirtualBox (см .: # 819 , # 9069 , # 12597 , # 14920 ), где vboxvfs, похоже, имеет некоторые проблемы с доступом через mmapped к синхронизированным файлам.

Это может произойти, если вы редактируете файл вне виртуальной машины и ожидаете увидеть такое же изменение внутри виртуальной машины.

] Чтобы обойти эту проблему, вам необходимо отключить поддержку ядра sendfile для доставки файлов клиенту, отключив опцию EnableSendfile . Это особенно важно для файлов, смонтированных по NFS или SMB.

Для Nginx (изменение в nginx.conf ), например

sendfile off;

Аналогично для Apache (в httpd. conf или в файле vhosts), например

<Directory "/path-to-nfs-files">
  EnableSendfile Off
</Directory>

После изменения перезагрузите Apache.


Другое возможное решение - просто не редактировать файлы на хосте или пытаться повторно редактировать тот же файл, но внутри ВМ.


Другой обходной путь включает удаление кеша страниц Linux, например

echo 1 > /proc/sys/vm/drop_caches

Или для очистки кешей каждую секунду (согласно в этом сообщении ) попробуйте:

watch -n 1 $(sync; echo 1 > /proc/sys/vm/drop_caches)

Примечание. Номер 1 означает освобождение кеша страниц, 2 для dentries и inodes, 3 для pagecache, dentries и inodes.


Вышеупомянутая проблема может быть воспроизведена следующей программой mmap-test, см .: mmap-problem.c .

2
ответ дан 28 November 2019 в 19:23

Теги

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