Назад | Перейти на главную страницу

Как я могу заставить браузеры проверять наличие новой версии, несмотря на директиву кеширования max-age 30 days?

В корне моего веб-сайта было следующее объявление:

<staticContent>
    <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" />
</staticContent>

Я думаю, это говорит браузерам не искать новые версии любых файлов, если они не старше 30 дней - это правильно?

Это не было моим намерением, и с тех пор я изменил инструкцию, но хотя некоторые браузеры сейчас обновляются, несмотря на старую инструкцию, некоторые нет. Есть ли способ заставить браузеры немедленно искать новую версию?

Спасибо.

Если браузер не запрашивает файл (до истечения срока его действия), вы не можете дать ему новую директиву кеширования.

Однако отмечу, что бит staticContent. ЕСЛИ это применяется только к статическому контенту, а не к вашим html-страницам, которые (вероятно, будут) динамическими, то вы можете изменить URL-адреса, указанные в html. Это может быть или нелегко организовать, в зависимости от того, как вы создаете свой контент, но в целом это очень разумная стратегия.

Например, вы можете взять свой путь к файлу css (или аналогично любой другой статический контент, на который вы ссылаетесь), плюс отметку времени, когда он был в последний раз изменен, объединить эти строки и сделать из них хеш md5. затем используйте URL-адрес, например http://example.com/static/{your_md5sum} .css в вашем html и сделайте копию или символическую ссылку из содержимого css, готового для обслуживания по этому пути. Затем вы всегда можете обслуживать свои ссылки css с многолетним сроком действия, но прекратите использовать старые версии, когда захотите. Также хорошо, если вы хотите, чтобы старые версии были доступны, потому что, например, они работают со старыми версиями страниц, которые люди могли скопировать в другом месте в Интернете, или со старыми электронными письмами или чем-то еще (последнее больше для изображений, чем css).

Чуть более простой механизм может заключаться в том, чтобы просто добавить метку времени к вашим путям, например http://example.com/foo/bar.css?t=1377075018, с меткой времени, взятой из времени модификации файла на вашем локальном сервере.