Использовать кеширование браузера только для некоторых файлов css и javascript

Есть ли способ кешировать браузер для некоторых файлов css и javascript только через файл htaccess? У меня есть три файла css

http://www.example.com/css/main.css 
http://www.example.com/css/star_rating.css 
http://www.example.com/js/jquery.autocomplete.css 

«main.css» может меняться день ото дня. Я хочу кэшировать только для star_rating.css и jquery.autocomplete.css, а не для main.css. Как я могу этого добиться?

Также есть ли способ кэшировать файл javascript Google AdSense.

https://www.gstatic.com/swiffy/v7.1/runtime.js 
http://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js 
https://pagead2.googlesyndication.com/pagead/osd.js 

person Nidhi    schedule 06.08.2015    source источник
comment
Вы можете рассмотреть возможность добавления данных get к запросу для main.css и все равно кэшировать их. Что-то вроде ...css/main.css?v=01 Таким образом, вы можете контролировать, когда принудительно запрашивать новый файл, изменяя число v.   -  person wiktus239    schedule 06.08.2015
comment
@wiktus239: Известно, что некоторые браузеры отключают кэширование, когда в URL-адресе есть параметр запроса (вероятно, для обхода ошибок, когда разработчики устанавливают неверные правила кэширования, влияющие на данные ajax). Лучшее решение — поместить номер версии в сам URL: ...css/01/main.css и переписать правила пользователя, чтобы указать правильный путь.   -  person slebetman    schedule 06.08.2015


Ответы (1)


Установите заголовок управления кешем в своем HTTP-ответе в .htaccess, на который уже ответили здесь: Как я могу добавить код управления кешем в htaccess?

Вам понадобится последующее правило, чтобы уменьшить интервал кеша main.css до того, что вам нужно. Однако, прежде чем приступить к этому...

Лично я бы не стал заморачиваться с такой изощренной детализацией, просто установил бы время кэширования, чтобы ресурсы запрашивались только один раз для типичного сеанса просмотра (24 часа?). Хотя некоторые кэши браузера могут быть довольно большими, нет никакой гарантии, что занятый пользователь будет по-прежнему кэшировать ваши ресурсы при следующем посещении вашего сайта, если он заполнит свой кэш, менее частые/устаревшие элементы будут удалены.

Для долгосрочных стратегий кэширования я бы просто проверил, работает ли поддержка ETag на ваших серверах. Если в браузере уже кэширован один из ваших элементов, он запросит заголовок «Если не изменено» и предоставит ETag, который он содержит для вашего ресурса.

Если ресурс не был изменен (если значения ETag совпадают), ваш сервер ответит 304 (не изменен) вместо 200, что является хорошей экономией для больших ресурсов.

Вы не можете влиять на заголовки ответа, если подключаетесь к файлам JavaScript Google AdSense, а не размещаете их самостоятельно, но в любом случае я ожидаю, что они должны иметь разумные заголовки управления кешем (установленные Google).

person Lee Kowalkowski    schedule 06.08.2015