2015-06-21 4 views
4

Я видел в некотором коде HP, что есть знак вопроса и номер после имени файла javascript, и это похоже на дату или что-то еще. Что такое «?» и номер за после javascript? Пример: "?"Что означает «?» И число, стоящее после javascript?

<script type="text/javascript" src="/folder/js/folderPageNextSubmit.js?20140801"></script> 

ответ

4

в JavaScript или CSS файлы - это способ добавить управление версиями в файл.

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

Общепринятая практика: timestamp как номер версии, чтобы получить что-то уникальное, но вы можете использовать любые цифры или символы.

+0

Спасибо всем! – CDMH

6

это для взлома кэша, например:

file.js?1234 

file.js?12345 

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

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

+0

Использование строк запроса может помешать некоторым браузерам полностью кэшировать файлы. Добавление ненужных накладных расходов. Переименование файла лучше. Не 100% уверены в том, что все еще есть, и если он может быть исправлен на уровне сервера, но стоит посмотреть. – Leeish

+0

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

+0

http://webmasters.stackexchange.com/questions/52948/url-with-query-disables-caching – Leeish

4

Люди обычно используют это, чтобы заставить пользователей обновлять кеш браузера. Если у меня есть файл на моей странице init.js, и вы посещаете мой сайт, а затем я его обновляю, и вы снова заходите, ваш браузер, вероятно, не загрузит мой обновленный файл, а просто использует то, что находится в его кеше.

Добавление случайной строки или даты заставит браузер обновить его кеш, поскольку он считает, что файл отличается.

Недостаток - я считаю, что он никогда не будет кэшировать его вообще. Некоторые браузеры будут загружать файл каждый раз, если вы используете URL-адрес paremeter против того, чтобы делать что-то вроде init.1234.js, поэтому использование метода param параметра URL, вероятно, не самая лучшая идея.

EDIT: Кроме того, лучше установить заголовок expires на вашем сервере, если вам нужно обновить некоторые важные файлы, но я не буду говорить, что я никогда не использовал этот метод, просто не лучшая идея. Я считаю, что лучше добавить дату в файле.

+0

http://stackoverflow.com/questions/14744149/aggressive-caching-do-all-browsers-support-url-parameter-for-updating – Leeish

+0

FYI, это не похоже на случайную строку. Похоже, что это код даты на 01/08/2014. Запросы браузера GET с параметрами URL-адреса могут быть кэшированы, если кеширование не отключено ответом сервера. Таким образом, только потому, что есть параметр запроса, это не означает, что он не будет кэшироваться. – jfriend00

1

В веб-запросе? Этот анти-шаблон используется, чтобы браузеры никогда не кэшировали файл (вернее, всегда кешировали другую копию), потому что он всегда имеет другой URL-адрес.

Лучше программисты просто используют настройки профиля кэша сервера/ответа и фактически позволяют кэшировать, если файлы не изменяются.

1

Это обычная стратегия принудительного перезагрузки файла вместо использования копии в кеше. Добавление временной метки таким образом заставляет перезагрузить.

1

В общем случае ? в любом URL-адресе означает конец пути и начало параметров запроса.

Таким образом, в вашем тег сценария:

<script type="text/javascript" src="/folder/js/folderPageNextSubmit.js?20140801"></script> 

Путь к файлу "/folder/js/folderPageNextSubmit.js" и параметр запроса ?20140801 был добавлен в конец URL.

Это полностью зависит от сервера, не делает ли он что-либо с этим конкретным параметром запроса или нет. Например, 20140801 может быть кодом даты для 1/08/2014, что означает, что сервер будет обслуживать определенную версию этого файла, соответствующую этому коду даты.

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

Не зная специфического использования и того, как сервер реализован, нельзя сказать, в каком именно случае.