【发布时间】:2013-11-20 22:54:58
【问题描述】:
我正在尝试使用我的 .htaccess 实现最佳缓存/gzip/速度,到目前为止我什么都没有,有人可以帮我实现吗?
【问题讨论】:
-
一些 .htaccess 示例,但它们破坏了我的网站
标签: .htaccess caching xampp gzip
我正在尝试使用我的 .htaccess 实现最佳缓存/gzip/速度,到目前为止我什么都没有,有人可以帮我实现吗?
【问题讨论】:
标签: .htaccess caching xampp gzip
如果您从单个 Apache 服务器(或据我所知的任何服务器)提供所有资源,则 GZip 和缓存实际上无法协同工作。这很复杂,但您可以在这里阅读:
https://issues.apache.org/bugzilla/show_bug.cgi?id=39727
在此跳至 Roy Fielding 关于这种方法徒劳的概要:
https://issues.apache.org/bugzilla/show_bug.cgi?id=39727#c31
基本上,您破坏了一些 HTTP 的动词(PUT 和条件 GET),以至于在处理一系列服务器时变得非常难以管理。
简而言之,只需启用客户端缓存即可最大程度地提升性能。如果您可以提供来自不同服务器的不同文件(例如 staticfiles.mydomain.com 和 dynamicfiles.mydomain.com),那么您可以在不缓存动态内容的情况下启用 GZip。
这是 .htaccess 中静态文件缓存的基本设置(推荐):
# Apache Cache Setting
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 hours"
ExpiresByType text/html "modification plus 1 days"
ExpiresByType text/css "modification plus 1 days"
ExpiresByType application/x-javascript "modification plus 1 days"
ExpiresByType application/javascript "modification plus 1 days"
ExpiresByType image/gif "access plus 1 years"
ExpiresByType image/jpeg "access plus 1 years"
ExpiresByType image/jpg "access plus 1 years"
ExpiresByType image/png "access plus 1 years"
EXpiresByType application/x-shockwave-flash "access plus 1 years"
ExpiresByType video/x-flv "access plus 1 years"
</IfModule>
如果您不关心上面的论点,有一个解决方法 如果你真的想同时启用缓存和 GZip(但不推荐):
SetOutputFilter DEFLATE
<IfModule mod_deflate.so>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 hours"
ExpiresByType text/html "modification plus 1 days"
ExpiresByType text/css "modification plus 1 days"
ExpiresByType application/x-javascript "modification plus 1 days"
ExpiresByType application/javascript "modification plus 1 days"
ExpiresByType image/gif "access plus 1 years"
ExpiresByType image/jpeg "access plus 1 years"
ExpiresByType image/jpg "access plus 1 years"
ExpiresByType image/png "access plus 1 years"
EXpiresByType application/x-shockwave-flash "access plus 1 years"
ExpiresByType video/x-flv "access plus 1 years"
</IfModule>
# remove the ETag (which circumvents the problem but invalidates
# an important part of the caching (i.e. uniqueness).
# This is not a good thing!!
FileETag None
祝你好运! :)
【讨论】: