Я використовую lighttpd для обслуговування статичних файлів. У мене є купа зображень у режимі, які я регулярно оновлюю. Це змінить вміст файлу (і розмір файлів), а також дату модифікації, але не їх ім'я файлу.
Коли я отримую доступ до файлів через http, оновлення не враховуються, і вони легко обслуговують старий файл. Я можу вручну перейменувати файл на щось інше, тоді lighttpd поверне помилку 404, і якщо я перейменую свій файл назад, я отримаю правильну оновлену версію. Здається, що легкий використовує якийсь власний механізм кешування (що добре) для повернення статичних файлів. На жаль, схоже, що цей механізм не оновлюється при зміні файлів.
Я перевірив Wireshark, і мій браузер дійсно робить запит у файл, це не проблема кешування браузера. Він повертає 200 ОК, коли вимагає його з порожнього кеша, і 304 Не змінено інакше, як очікувалося. Але файл повертається з неправильним заголовком Last-Modified, який не відображає реальної дати останньої модифікації.
Можливо, є якась директива конфігурації, про яку я не знаю?
Мені хотілося б, щоб файли, повернені легкими, відображали зміни, внесені на диск безпосередньо, або принаймні мати можливість недійсно кешувати.
Оновлення для всіх, хто перейшов до цього питання: я знайшов винуватця. Якщо я оновлюю статичний файл, Lighty не повертає новий вміст, але повертає нову довжину вмісту в його заголовки, в результаті чого відображається сміття. Якщо я стискаю файл за допомогою mod_compress, проблема усувається, оскільки mod_compress використовує власну систему кешування. На жаль, я не можу стискати всі файли (наприклад, файли зображень). Тож це лише часткове виправлення, але я повернусь до цього пізніше і з надією знайду рішення.