У меня есть виртуальная машина CentOS 6.5, настроенная с использованием Apache HTTPD 2.2 в качестве веб-сервера, и я использую GulpJS для своего процесса сборки. Когда я обновляю файл CSS, процесс сборки GulpJS работает нормально, и если я смотрю файл на виртуальной машине, я вижу обновления, однако при обслуживании через Apache HTTPD в файле нет изменений. Если я редактирую файл с помощью vi, не делаю никаких изменений и просто сохраняю его снова, Apache HTTPD затем принимает изменения и выводит правильный файл.
Я отключил модуль mod_cache (например, закомментировал для него директиву LoadModule), так как думал, что это может быть причиной, но это не имело значения.
Кто-нибудь еще сталкивался с этой проблемой и знает, как ее исправить?
[ОБНОВЛЕНИЕ] - Я только что посмотрел журнал доступа httpd и увидел, что файл обслуживается httpd каждый раз, до и после обновлений, но ничего не меняется:
192.168.56.1 - - [22/Jun/2014:09:27:42 +0100] "GET /includes/min/stylesheet.min.css HTTP/1.1" 200 135882 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36"
192.168.56.1 - - [22/Jun/2014:09:29:22 +0100] "GET /includes/min/stylesheet.min.css HTTP/1.1" 200 135878 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36"
Не считая длины файла. Это предполагает, что httpd видит обновление файла, но не обновляется в браузере. Я пробовал несколько разных браузеров, очищал кеши браузера и т. Д., Но пока я не отредактирую файл на сервере с помощью vi и не сохраню его снова, ни один браузер не загрузит новую версию файла, что заставляет меня думать, что httpd все еще обслуживает неправильная версия файла. Так странно.
[ОБНОВЛЕНИЕ 2] - Я считаю, что это может быть связано с VirtualBox и общими папками. Файлы для сайта находятся на хосте (Mac OS X 10.9.3) и скомпилированы там с помощью NodeJS. Они компилируются в папку, которая используется совместно с гостевой ОС (CentOS) с использованием общих папок VBox. Если я посмотрю на файл в каталоге через консоль, я вижу:
-rwxrwxrwx. 1 root root 135881 Jun 23 2014 stylesheet.min.css
Как видите, вместо обычных для файла Месяца, Дня и Времени в нем есть Месяц, День и Год. Мне это кажется неуместным, но я понятия не имею, что это значит и имеет ли это значение.
Нашел решение этого. Это была проблема с кешем Apache HTTPD. Я вставляю модули mod_cache и mod_disk_cache обратно, а затем устанавливаю следующую директиву:
CacheDisable /
Это решило проблему. Не уверен, почему простая загрузка модулей кеширования не имела такого же эффекта.
ОБНОВЛЕНИЕ: хотя это действительно помогло решить проблему в течение некоторого времени, похоже, что это не настоящее решение. На самом деле проблема заключается в том, что машина работает на VirtualBox, а файлы, которые она обслуживает, находятся на хост-машине и подключены к гостю с помощью vboxsf. Проблема и решение описаны в следующем сообщении блога:
http://www.frandieguez.com/blog/2013/05/solving-caching-issues-with-vagrant-on-vboxsf/