仅为某些css和javascript文件利用浏览器缓存

时间:2015-08-06 09:01:07

标签: javascript css .htaccess caching browser-cache

有没有办法只通过htaccess文件浏览缓存一些css和javascript文件? 我有三个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。我怎样才能做到这一点?

还有任何方法来缓存谷歌的adsense javascript文件。

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

1 个答案:

答案 0 :(得分:0)

在HTTP响应中设置缓存控制标头,在.htaccess中,已在此处回答:How can i add cache control code to htaccess?

您需要一个后续规则来减少main.css的缓存间隔,以满足您的需求。但是,在你开始之前......

就个人而言,我不打算使用如此复杂的粒度,只需设置缓存时间,以便仅为典型的浏览会话(24小时?)请求一次资源。虽然某些浏览器缓存可能相当大,但无法保证忙碌的用户在下次访问您的网站时仍然会缓存您的资源,如果他们填充缓存,则会删除频率较低/过时的项目。

对于长期缓存策略,我只会检查ETag支持是否适用于您的服务器。如果浏览器已经缓存了您的某个项目,它将使用“If Not Modified”标头请求并提供它为您的资源保留的ETag。

如果资源未被修改(如果ETag值匹配),您的服务器将使用304(未修改)而不是200来响应,这对于大型资源来说是一个很好的保存。

如果热链接到Google AdSense JavaScript文件而不是自己托管它们,则无法影响响应标头,但他们应该拥有合理的缓存控制标头(由Google设置),无论如何我都希望如此。