首页 > 解决方案 > Apache GZip 无法使用文本文件和 js 文件?

问题描述

我正在尝试使用 Apache mod_deflate 模块添加 GZip 压缩。除文本文件(“.txt”)外,所有内容都被压缩。压缩 HTML 文件和 JS 文件时也面临问题。

例如:假设一个脚本文件(“main.js”)托管在http://example.com

文件内容:

情况 1:

// Contents of main.js
console.log("Hello World");

console.log("Hello World");
   console.log("Hello World"); 
console.log("Hello World"); console.log("Hello World");

情况 2:

    // Contents of main.js
    Hello World! Hello World!
    Hello World! Hello World! Hello World!

    Hello World! Hello World! Hello World! Hello World!
 Random Contents

在情况1,当我访问时http://example.com/main.js,它显示内容编码:gzip。
在案例 2 中,当我访问时http://example.com/main.js,它不显示任何 content-encoding: gzip 标头。

所以 GZip 仅适用于 .js 文件的案例 1。

GZip 不适用于文本文件(.txt 扩展名)并且不显示任何 content-encoding: gzip 标头。

// .ht 访问代码

<IfModule mod_deflate.c>
<IfModule mod_mime.c>
    AddType text/plain .txt
</IfModule>
  SetOutputFilter DEFLATE
</IfModule>

我的软件清单

标签: phphtmlapache.htaccessgzip

解决方案


如果您在 .htaccess 文件中添加默认的 mod_deflate 和 mod_gzip conf 会进行一些更改吗?

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml

# Remove browser bugs (only needed for really old browsers)
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
</IfModule>

<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 mime ^application/x-javascript.*
mod_gzip_item_include mime ^text/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_include handler ^cgi-script$
</IfModule>

推荐阅读