Apache некорректно обслуживает измененные статические ресурсы: обслуживает устаревший файл с размерами, откорректированными в соответствии с размером нового файла

У меня есть проект CakePHP, запущенный в CentOS VirtualBox. Сайт обслуживается Apache 2.2.15.

В корневой папке документа находятся файлы JS. Апач, казалось, подал им файл.

Но после того, как я отредактирую файл JS, Apache будет обслуживать старый файл. Он изменит размер старого файла в соответствии с размером нового файла и будет обслуживать измененный старый файл:

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

Перезапуск Apache не решает проблему.

Единственный способ заставить Apache обслуживать текущий файл - это переместить файл в другое место. Тогда CakePHP отобразит причудливую страницу 404. Затем я перемещаю файл обратно, и Apache отображает файл в его текущем состоянии.

Но i2.2.15t остановит файл в этом состоянии, и после изменения файла мне придется повторить трюк снова.

Журналы Apache чистые, файл журнала доступа отображает это:

172.28.128.1 - - [12 / Jul / 2014: 07: 42: 13 -0400] "GET /assets/js/compiled/editable_group.js HTTP / 1.1" 200 903

В чем причина проблемы и как мне ее решить?

PS Я буду рад предоставить любые детали, логи, конфиги и т. Д. Просто скажите мне, что вы хотите увидеть.

1 ответ

Хорошо, нашел ответ в этом вопросе:

Apache на CentOS 5.9 VM неправильно обслуживает измененные файлы

Решение состоит в том, чтобы включить EnableSendfile off в <directory> раздел в конфигурации Apache.

Другие вопросы по тегам