Наличие любого параметра (?blablabla) у ссылки на подключаемый файл заставляет любое клиентское приложение (браузер, прокси-сервер, мобильное приложение и т.д.) обязательно обратиться за файлом на сервер. Это RFC. Сервер, в лучшем случае ответит "304 Not Modified" (но при этом всё равно дёрнет файл с диска/памяти, чтобы проверить) или же полноценный 200 с полной передачей файла. Ответ сервера в некоторых кешах сохранится, в некоторых (н-р, AppCache) нет.
Соответственно, время модификации, хеш от него или любой другой праметр для cache busting должен быть в имени или пути файла (...template_283cd0022d3edc763e34cc00a91e7e1b/template_283cd0022d3edc763e34cc00a91e7e1b-142712022549372.js), а не в параметре (...template_283cd0022d3edc763e34cc00a91e7e1b/template_283cd0022d3edc763e34cc00a91e7e1b.js?142712022549372).
Проверить очень просто: при повторном открытии страницы сайта на сервер должен идти только 1 запрос - на саму страницу, а все остальные файлы должны браться из кеша браузера.
UPDATE 2015-04-01
Теоретическое обоснование и рекомендации от известных разработчиков:
Never access cached files by using traditional GET parameters (like other-cached-page.html?parameterName=value). This will make the browser bypass the cache and attempt to get it from network.
Не понял смысла предложения. Параметры не мешают кэшированию, если они не изменяются постоянно. Специально сейчас проверил у себя - даже If-Modified-Since-запросы из браузера не идут. (CDN не используется). Может, вам нужно проверить настройки веб-сервера (чтобы Expires правильный отдавал) ?
Параметры не мешают кэшированию, если они не изменяются постоянно.
Специально сейчас проверил у себя - даже If-Modified-Since-запросы из браузера не идут. (CDN не используется).
Может, вам нужно проверить настройки веб-сервера (чтобы Expires правильный отдавал) ?