我正在尝试创建一个理想的.htaccess文件,该文件将勾选所有方框以利用服务器压缩,但仅限于有意义的地方,以及在公共代理上缓存资源,再次在有意义的地方。我一直在摸索着这个过程,我觉得我几乎都在那里,但我怀疑可能还有一些蠢事,我想我会邀请建议。我怀疑它还没有,因为我发现了一个很棒的工具,我必须先和你分享。
www.pingdom.com有一套很棒的网站分析工具,其中很多都是免费使用的,我个人认为最好的是http://tools.pingdom.com/fpt/。这会向您显示网页每个元素的加载时间,但更重要的是,根据它的性能等级'标签显示事情可能更好的细分。现在我使用了Google(和其他人)提供的大量JQuery资源,我知道这些资源应该存在于许多代理服务器上。我不确定如何在我的.htaccess文件中说(虽然我已经尝试过),果然,Pingdom的anaylsis包含以下feedack:
以下可公开缓存的可压缩资源应具有 "变化:接受编码"头:
•HTTP://jmar777.googlecode.com/svn/trunk/js/jquery.easing.1.3.js
•HTTP://kwicks.googlecode.com/svn/branches/v1.5.1/Kwicks/jquery.kwicks-1.5.1.pack.js
嗯,我以为我已经做到了,但话又说回来,或许它取决于那些实际上用这些资源来设置这些标题的服务器,也许我无能为力它?是这样吗?无论如何这里是我的.htaccess文件。请注意我的缓存设置非常低,因为我仍在尝试/学习它。在我开始使用之前,我会对此进行调整。
suPHP_ConfigPath /home/mydomain/public_html
<Files php.ini>
order allow,deny
deny from all
</Files>
<ifModule mod_deflate.c>
<filesMatch "\.(js|css|php|htm|html)$">
SetOutputFilter DEFLATE
</filesMatch>
</ifModule>
# 1 HOUR
<filesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf|htm|html|)$">
Header set Cache-Control "max-age=3600, public"
</filesMatch>
# PHP - NO CACHING WANTED DUE TO USING SESSION COOKIES
<filesMatch "\.(php)$">
Header set Cache-Control "private"
</filesMatch>
# STORE BOTH COMPRESSED AND UNCOMPRESSED FILES FOR JS & CSS
<IfModule mod_headers.c>
<FilesMatch "\.(js|css|xml|gz)$">
Header append Vary Accept-Encoding
</FilesMatch>
</IfModule>
你可以看到我正在努力做一个“不同的接受编码”&#39;在文件的末尾,但不确定这是否是所需要的。我如何告诉客户端访问JQuery之类的代理,这些文件无疑存储在其中,还有什么我可以做的,以使我的.htaccess文件提供更快的速度和我的搜索引擎友好的内容?
感谢您的想法。
编辑:
看来我的问题不够明确,所以这里有一些澄清:
1)在Google上托管的JQuery库,其代理可用性在某种程度上受我的.htaccess设置的控制,因为我在我的PHP中进行远程引用,如果是这样,我应该如何说,我的.htaccess文件,&#39;请将该库缓存在代理中一年左右&#39 ;?
2)我应该如何指定Google托管文件应该通过“Vary Accept-Encoding&#39;”提供压缩和解压缩?我猜这两个问题都是谷歌控制而不是我的,所以要做到绝对明确......
3)压缩选择和文件的代理是像我控制下的JQuery库还是在(在这种情况下)Googles?
4)一般来说,我的.htaccess文件中的任何内容都以次优(long winded)方式表示,我怎样才能缩短/压缩它?
5).htaccess文件中的任何内容都以可能导致问题的方式排序 - 例如我在三个单独的规则下引用CSS - 顺序是否重要?
(编辑完结后)。
答案 0 :(得分:-1)
是jQuery库,谷歌在的东西,其代理的可用性是莫名其妙的我的.htaccess设置的控制下举办的,因为我在做我的PHP远程引用它,如果是这样,怎么说呢,在我的。 htaccess文件,'请在代理中缓存该库一年左右'?
这个断言是不正确的。浏览器决定是否缓存,下载与否,具体取决于 请求的标头交换。因此,如果查询响应涉及对多站点的请求,那么您的.htaccess
文件只会影响它对文件进行缓存的方式。它如何缓存谷歌是由谷歌决定。例如,对http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js
的请求收到响应标头:
Age:133810
Cache-Control:public, max-age=31536000
Date:Fri, 17 Feb 2012 21:52:27 GMT
Expires:Sat, 16 Feb 2013 21:52:27 GMT
Last-Modified:Wed, 23 Nov 2011 21:10:59 GMT
浏览器通常会缓存一年,但可能会决定在重用时重新验证:
If-Modified-Since:Wed, 23 Nov 2011 21:10:59 GMT
在这种情况下, ajax.googleapis.com 会回复301和以下标题:
Age:133976
Date:Fri, 17 Feb 2012 21:52:27 GMT
Expires:Sat, 16 Feb 2013 21:52:27 GMT
这个简短的请求/响应对话通常需要约50毫秒,因为此内容是CDN传送的。
你可能希望以这种方式修改你的其他补充Q,因为有些不适用