похвальное усилие.Кеширование получает слишком мало доброй воли.Пожалуйста, наслаждайтесь моей короткой прозой, пытающейся помочь вам на вашем пути.
Резюме
Отправка заголовков ETag
и Last-Modified
позволит браузеру отправлять If-Modified-Since
иIf-None-Match
заголовок обратно на ваш сервер при последующих запросах.Затем вы можете, когда это применимо, ответить кодом состояния 304 Not Modified
HTTP и пустым телом, например Content-Length: 0
.Включение заголовка Expires
поможет вам обслуживать свежий контент в один прекрасный день, когда контент действительно изменился.
Ученик
Звучит достаточно просто, но может быть немного сложно получить толькоправо.К счастью для всех нас, действительно хорошее руководство доступно.
Как только вы его запустите, пожалуйста, перейдите к REDbot , чтобы помочь вам сгладить любые неровные углыВы, возможно, ушли.
Эксперт
Для значения ETag
вам понадобится что-то, что вы можете воспроизвести, но все равно будет меняться всякий раз, когда это происходит.В противном случае вы не сможете определить, совпадает ли входящее значение или нет.Хорошим кандидатом на воспроизводимое значение, которое все еще изменяется при изменении содержимого, является MD5-хэш mtime
файла, передаваемого через кеш.В вашем случае это, вероятно, будет сумма для всех объединяемых файлов.
Для Last-Modified
логический ответ - это фактическое mtime
обслуживаемого файла.Почему пренебрегают очевидным.Или для группы файлов, как в вашем случае, используйте самый последний mtime
в связке.
Для Expires
, просто выберите соответствующий TTL
или время жизни, дляактив.Добавьте это число к mtime
актива или к значению, которое вы выбрали для Last-Modified
, и у вас есть ответ.
Вы также можете включить Cache-Control
заголовки, чтобы возможные прокси могли узнать об этом.как правильно обслуживать своих клиентов.
Ученый
Для более конкретного ответа на ваш вопрос, пожалуйста, обратитесь к этим вопросам, предшествующим вашему: