【问题标题】:Apache GZip not working text files and js files?Apache GZip 无法使用文本文件和 js 文件?
【发布时间】:2019-12-13 01:30:53
【问题描述】:

我正在尝试使用 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 扩展名)并且不显示任何内容编码:gzip 标头。

// .ht 访问代码

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

我的软件列表

  • Apache 版本 - 2.4.39
  • PHP 版本 - 7.3
  • 操作系统 - Windows 10
  • 软件 - Wamp 64Bit

【问题讨论】:

  • 如果去掉SetOutputFilter DEFLATE这行,js文件还压缩吗? (我的猜测是压缩来自其他地方,你的 .htaccess 没有效果。)
  • 否,删除此 GZip 后完全禁用。

标签: php html apache .htaccess gzip


【解决方案1】:

如果在 .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>

【讨论】:

  • mod_gzip.c 模块在 apache 2.4 上不可用,并且 mod_deflate 已启用,但它不适用于文本文件。
猜你喜欢
  • 1970-01-01
  • 2018-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-26
  • 2018-08-03
  • 2014-12-31
  • 2018-08-23
相关资源
最近更新 更多