Что Firefox решает не кэшировать?
Я просматриваю сетевой трафик из моего приложения rails с помощью firebug и вижу, что файлы css и javascript не кэшируются. На странице есть такие вещи, как:
<script src="/javascripts/prototype.js?1315256241" type="text/javascript"></script>
и это выглядит так, как будто?1315256241 заставляет FF не кэшировать элемент. Но?1315256241 - это "особенность" Rails, которая была представлена несколько лет назад. Поэтому я удивлен, что это предотвращает кеширование элемента, но никто не спрашивал об этом и не исправлял его.
Я задал этот же вопрос на форуме FF и, возможно, на форуме Rails, но безрезультатно. Никто, кажется, не понимает мой вопрос или смысл этого. Поэтому я подумал, что попробую здесь.
Мой вопрос "суффикс?1315256241 (запрос) препятствует FF от кэширования страницы?"
И если это произойдет, что большинство людей делают в Rails, чтобы предотвратить это?
2 ответа
Если вы просматриваете документацию для AssetTagHelper и ищете "Настройка пути ресурса", вы найдете это объяснение того, почему код добавляет метку времени вместе с необходимыми изменениями в моей конфигурации Apache, чтобы воспользоваться этой функцией.
По умолчанию Rails добавляет временные метки актива ко всем путям актива. Это позволяет вам установить дату истечения срока действия кэша для актива далеко в будущем, но при этом иметь возможность мгновенно аннулировать его, просто обновив файл (и, следовательно, обновив метку времени, которая затем обновляет URL-адрес, поскольку метка времени является частью этого что в свою очередь перебивает кеш).
Ответственность за использование этой функции лежит на веб-сервере, который вы используете для установки даты истечения срока действия для ресурсов кэша. Вот пример для Apache:
# Asset Expiration
ExpiresActive On
<FilesMatch "\.(ico|gif|jpe?g|png|js|css)$">
ExpiresDefault "access plus 1 year"
</FilesMatch>
(и документация продолжается...)
Правильно ли я думаю, что число после? такое случайное число? Этот метод иногда используется грубо, чтобы предотвратить кеширование
Если это так, то Firefox не будет кешировать, поскольку каждый раз, когда он думает, что запрашивает другой файл, см., Например, ниже.
/javascripts/prototype.js?1315256241
/javascripts/prototype.js?1315256242
/javascripts/prototype.js?1315256243
/javascripts/prototype.js?1315256244
и т. д.
Я бы посмотрел на удаление числа в строке запроса, так как оно не выглядит обязательным. Я не разработчик rails, поэтому было бы интересно узнать, что вы имеете в виду, когда говорите, что это "особенность".