JavaScript « Что за параметры в конце путей к javascript-файлам после знака вопроса?

В html-коде некоторых сайтов можно встретить в конце адреса javascript- и css-файлов какие-то параметры после знака вопроса. Например, .../comments.js?7 , .../my.js?v=010910 или же .../video.css?22. Для чего нужны эти параметры? Я так понимаю, что это get-параметры, но каким образом они используются в javascript- и css-кодах? Приведите, пожалуйста, примеры.

1 ответов


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


Варианта два.
1) Самый распостраненный - избежание кеширования браузером старой версии файла. v=010910 намекает нам, что это version от 1 сентября 2010 года. Или от 9 января.
2) Значительно реже - параметр используется для чего-то другого, но обычно он обрабатывается сервером, а не клиенским скриптом. Тогда за именем js или css файла скрывается серверный обработчик, который и собирает нужный вариант файла в зависимости от переданных параметров.


Я использую это когда нужно генерировать в PHP код CSS (это я конечно лишнего написал :) ) или JavaScript, параметры используются как идентификатор кеша. Так же для склеивания нескольких фалов в один.


<script src="JSLoader.js?l={$param1}&load=lang,define" type="text/javascript"></script>
 
Перехватываю в .htaccess

RewriteRule ^CSSCombine\.css$   /index.php?engine=CSSCombine   [NC,QSA,L]
RewriteRule ^JSLoader\.js$      /index.php?engine=JSLoader     [NC,QSA,L]
 
А потом отдаю с соответствующим хидером,

header('Content-type: text/javascript');
echo $this->js;
 

вроде как для версионности используют