Что означает добавление «? V = 1» к URL-адресам CSS и Javascript в тегах ссылок и скриптов?

Я изучал шаблонный шаблон HTML 5 (из http://html5boilerplate.com/ ) и заметил использование "? v = 1" в URL-адресах при ссылке на файлы CSS и Javascript.

  1. Что делает добавление "? v = 1" к URL-адресам CSS и Javascript в тегах ссылок и скриптов?
  2. Не все URL-адреса Javascript имеют «? V = 1» (пример из приведенного ниже примера: js / modernizr-1.5.min.js ). Есть ли причина, почему это так?

Образец из их index.html :






















130
задан TylerH 2 October 2019 в 20:16
поделиться

3 ответа

Обычно они нужны для того, чтобы убедиться, что браузер получает новую версию, когда сайт обновляется новой версией, например как часть нашего процесса сборки у нас будет что-то вроде этого:

/Resources/Combined.css?v=x.x.x.buildnumber

Поскольку это изменяется с каждым новым кодом, клиент вынужден получить новую версию только из-за строки запроса. Взгляните на эту страницу (во время этого ответа), например:

<link ... href="http://sstatic.net/stackoverflow/all.css?v=c298c7f8233d">

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

Оба этих подхода позволяют установить для заголовка кеша что-то смехотворно длинное, скажем, 20 лет ... но когда он изменяется, вам не нужно беспокоиться об этом заголовке кеша, браузер видит другую строку запроса и обрабатывает это как другой, новый файл.

167
ответ дан 24 November 2019 в 00:24
поделиться

Файлы Javascript часто кэшируются браузером гораздо дольше, чем вы ожидаете.

Это может привести к неожиданному поведению при выпуске новой версии вашего JS-файла.

Поэтому обычной практикой является добавление параметра QueryString в URL для файла javascript. Таким образом, браузер кэширует файл Javascript с параметром v=1. Когда вы выпустите новую версию вашего файла javascript, вы измените url's на v=2, и браузер будет вынужден загрузить новую копию.

7
ответ дан 24 November 2019 в 00:24
поделиться

Это гарантирует, что вы получаете последнюю версию css или js файла с сервера.

А позже вы можете добавить "?v=2", если у вас более новая версия, и "?v=3", "?v=4" и так далее.

Обратите внимание, что вы можете использовать любую querystring, 'v' не является обязательным, например:

"?blah=1" будет работать также.

И

"?xyz=1002" будет работать.

И это распространенная техника, потому что браузеры теперь кэшируют js и css файлы лучше и дольше.

22
ответ дан 24 November 2019 в 00:24
поделиться