我无法让我的网站使用gzip压缩。
我最近在css-tricks.com上看了Chris Coyier的video。在视频中,他谈到了启用gzip压缩以使网站运行得更快。
根据他的指示,我通过html5boilerplate.com链接到github,从他们的.htaccess文件中复制gzip压缩代码,将其粘贴到我自己的文件中,并将其上传到我的网站。
我通过gzipwtf.com对它进行了测试,但它似乎无法正常工作。任何人都可以帮我这个吗?
我的.htaccess文件如下所示:
# ----------------------------------------------------------------------
# Trim www
# ----------------------------------------------------------------------
RewriteEngine On
RewriteCond %{HTTP_HOST} !^orbitprint.com$ [NC]
RewriteRule ^(.*)$ http://orbitprint.com/$1 [L,R=301]
# ----------------------------------------------------------------------
# Gzip compression
# ----------------------------------------------------------------------
<IfModule mod_deflate.c>
# Force deflate for mangled headers developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping/
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
</IfModule>
</IfModule>
# Compress all output labeled with one of the following MIME-types
<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE application/atom+xml \
application/javascript \
application/json \
application/rss+xml \
application/vnd.ms-fontobject \
application/x-font-ttf \
application/xhtml+xml \
application/xml \
font/opentype \
image/svg+xml \
image/x-icon \
text/css \
text/html \
text/plain \
text/x-component \
text/xml
</IfModule>
</IfModule>
答案 0 :(得分:90)
试试这个:
####################
# GZIP COMPRESSION #
####################
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-javascript application/x-httpd-php
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip
答案 1 :(得分:35)
最好像下面的代码段一样实现它。
只需将以下内容粘贴到.htaccess
文件中,然后使用:Google PageSpeed,Pingdom Tools和GTmetrics检查效果。
# Enable GZIP
<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</ifmodule>
# Expires Headers - 2678400s = 31 days
<ifmodule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 seconds"
ExpiresByType text/html "access plus 7200 seconds"
ExpiresByType image/gif "access plus 2678400 seconds"
ExpiresByType image/jpeg "access plus 2678400 seconds"
ExpiresByType image/png "access plus 2678400 seconds"
ExpiresByType text/css "access plus 518400 seconds"
ExpiresByType text/javascript "access plus 2678400 seconds"
ExpiresByType application/x-javascript "access plus 2678400 seconds"
</ifmodule>
# Cache Headers
<ifmodule mod_headers.c>
# Cache specified files for 31 days
<filesmatch "\.(ico|flv|jpg|jpeg|png|gif|css|swf)$">
Header set Cache-Control "max-age=2678400, public"
</filesmatch>
# Cache HTML files for a couple hours
<filesmatch "\.(html|htm)$">
Header set Cache-Control "max-age=7200, private, must-revalidate"
</filesmatch>
# Cache PDFs for a day
<filesmatch "\.(pdf)$">
Header set Cache-Control "max-age=86400, public"
</filesmatch>
# Cache Javascripts for 31 days
<filesmatch "\.(js)$">
Header set Cache-Control "max-age=2678400, private"
</filesmatch>
</ifmodule>
答案 2 :(得分:10)
你的.htaccess应该运行得很好;它取决于四个不同的Apache模块(每个<IfModule>
指令一个)。我想其中一个:
您的Apache服务器没有安装和运行mod_filter,mod_deflate,mod_headers和/或mod_setenvif模块。如果您可以访问服务器配置,请检查/etc/apache2/httpd.conf
(以及相关的Apache配置文件);否则,您可以在apache2handler部分下看到通过phpinfo()
加载的模块(参见附图); (编辑)或者,您可以打开终端窗口并发出将列出已加载模块的命令sudo apachectl -M
;
如果您收到http 500内部服务器错误,则可能不允许您的服务器使用.htaccess文件;
您正在尝试加载一个发送自己标题的PHP文件(覆盖Apache的标题),从而“混淆”浏览器。
在任何情况下,您都应仔细检查服务器配置和错误日志,看看出了什么问题。可以肯定的是,尝试使用Apache docs中建议here的最快方式:
AddOutputFilterByType DEFLATE text/html text/plain text/xml
然后尝试加载一个大文本文件(最好先清理你的缓存)。
( EDIT )如果所需的模块(在Apache模块目录中)但未加载, 只需编辑/etc/apache2/httpd.conf并为每一个添加LoadModule指令。
如果所需的模块不存在(既没有加载,也没有加载到Apache模块目录中),我担心唯一的选择是重新安装Apache(完整版)。
答案 3 :(得分:7)
首先转到apache / bin / conf / httpd.conf 并确保已启用mod_deflate.so。
然后转到 .htaccess 文件并添加以下行:
SetOutputFilter DEFLATE
这应该输出所有服务为gzip的内容,我已经尝试了它并且它可以工作。
答案 4 :(得分:2)
使用相同的.htaccess配置进入此问题。我意识到我的服务器正在以text/javascript
而不是application/javascript
的形式提供javascript文件。将text/javascript
添加到AddOutputFilterByType
声明后,gzip就开始工作了。
至于为什么javascript被用作text/javascript
:我的根.htaccess文件顶部有一个AddType 'text/javascript' js
声明。删除后(它已被错误添加),javascript开始作为application/javascript
。
答案 5 :(得分:2)
在我的情况下,我使用以下代码在apache web服务器中启用gzip压缩。
# Compress HTML File, CSS File, JavaScript File, Text File, XML File and Fonts
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/json
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
我参考了http://www.tutsway.com/enable-gzip-compression-using-htacess.php。
答案 6 :(得分:2)
如果您的Web主机是通过C Panel在Apache C Panel上启用G ZIP压缩
转到CPanel并检查软件选项卡。
以前优化曾经工作的网站,但现在有一个新选项,即“MultiPHP INI Editor”。
选择您要压缩的域名。
向下滚动到底部,直到找到zip输出压缩并启用它。
现在再次检查G ZIP压缩。
您也可以关注视频教程。 https://www.youtube.com/watch?v=o0UDmcpGlZI
答案 7 :(得分:1)
在我的情况下,仅添加此行
SetOutputFilter DEFLATE
答案 8 :(得分:1)
通过.htaccess启用压缩
对于大多数阅读此内容的人来说,通过在其Web主机/服务器上向名为.htaccess的文件中添加一些代码来启用压缩。这意味着在您的虚拟主机上转到文件管理器(或者您要添加或上传文件的位置)。
.htaccess文件控制着您网站的许多重要事项。
以下代码应添加到.htaccess文件...
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>
保存.htaccess文件,然后刷新您的网页。
使用Gzip compression tool检查您的压缩是否有效。
答案 9 :(得分:0)
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>
<IfModule mod_deflate.c>
# Insert filters
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE image/svg+xml
# Drop problematic browsers
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</IfModule>