Я изучал шаблонный шаблон HTML 5 (из http://html5boilerplate.com/ ) и заметил использование "? v = 1"
в URL-адресах при ссылке на файлы CSS и Javascript.
"? v = 1"
к URL-адресам CSS и Javascript в тегах ссылок и скриптов? «? V = 1»
(пример из приведенного ниже примера: js / modernizr-1.5.min.js
). Есть ли причина, почему это так? Образец из их index.html
:
Обычно они нужны для того, чтобы убедиться, что браузер получает новую версию, когда сайт обновляется новой версией, например как часть нашего процесса сборки у нас будет что-то вроде этого:
/Resources/Combined.css?v=x.x.x.buildnumber
Поскольку это изменяется с каждым новым кодом, клиент вынужден получить новую версию только из-за строки запроса. Взгляните на эту страницу (во время этого ответа), например:
<link ... href="http://sstatic.net/stackoverflow/all.css?v=c298c7f8233d">
Я думаю, что вместо номера редакции команда SO использовала хеш файла, что является даже лучшим подходом, даже с новой версией, только браузеры вынужден загрузить новую версию, когда файл на самом деле изменяется.
Оба этих подхода позволяют установить для заголовка кеша что-то смехотворно длинное, скажем, 20 лет ... но когда он изменяется, вам не нужно беспокоиться об этом заголовке кеша, браузер видит другую строку запроса и обрабатывает это как другой, новый файл.
Файлы Javascript часто кэшируются браузером гораздо дольше, чем вы ожидаете.
Это может привести к неожиданному поведению при выпуске новой версии вашего JS-файла.
Поэтому обычной практикой является добавление параметра QueryString в URL для файла javascript. Таким образом, браузер кэширует файл Javascript с параметром v=1. Когда вы выпустите новую версию вашего файла javascript, вы измените url's на v=2, и браузер будет вынужден загрузить новую копию.
Это гарантирует, что вы получаете последнюю версию css или js файла с сервера.
А позже вы можете добавить "?v=2"
, если у вас более новая версия, и "?v=3", "?v=4"
и так далее.
Обратите внимание, что вы можете использовать любую querystring
, 'v' не является обязательным, например:
"?blah=1
" будет работать также.
И
"?xyz=1002"
будет работать.
И это распространенная техника, потому что браузеры теперь кэшируют js и css файлы лучше и дольше.