本文完整阅读约需 12 分钟,如时间较长请考虑收藏后慢慢阅读~

MAMP是Web(尤其是PHP)开发者通常在使用MacOS进行Web开发时的最佳选择,然而当有时候我们需要对所开发网站的页面大小进行评估,却发现MAMP默认并未开启gzip压缩(通常线上服务器会开启gzip,优化页面的体积),设置面板中也未找到gzip相关字样。那么我们应该如何开启MAMP的gzip压缩功能呢?

For Apache

对于使用Apache的用户,我们需要修改httpd.conf配置文件。该文件通常位于/Applications/MAMP/conf/apache/httpd.conf中,打开之,并在文件末尾添加以下配置

<IfModule mod_deflate.c>
    # Compress HTML, CSS, JavaScript, Text, XML and fonts
    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>

然后关闭MAMP,重新开启,即可以在返回的HTTP头中发现以下字段,gzip开启成功:

For Nginx

对于使用Nginx的用户,可以修改/Applications/MAMP/conf/nginx/nginx.conf文件,在http { }部分加入以下配置:

# 启用gzip
gzip on;

# 启用gzip压缩的最小文件,小于设置值的文件将不会压缩
gzip_min_length 1k;

# gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间
gzip_comp_level 9;

# 进行压缩的文件类型。javascript有多种形式。其中的值可以在 mime.types 文件中找到。
# 注意:text/html已经被隐式包含,不需要重复声明
gzip_types text/plain text/css application/javascript text/javascript application/json text/xml application/rss+xml image/jpeg image/gif image/png image/svg+xml image/tiff image/webp image/x-ms-bmp application/pdf audio/mpeg audio/ogg audio/x-m4a video/mp4 video/mpeg video/quicktime video/webm video/x-m4v video/x-flv video/x-msvideo video/x-ms-wmv;

# 是否在http header中添加Vary: Accept-Encoding,建议开启
gzip_vary on;

# 禁用IE 6 gzip(支持不佳)
gzip_disable "MSIE [1-6]\.";

# 设置压缩所需要的缓冲区大小,建议按照文档保持不变
gzip_buffers 32 4k;

关闭MAMP后重新开启,即可启用gzip支持。

注意:该方法在升级MAMP版本后,由于文件覆盖,会出现配置失效的情况,因此在升级版本后,请按照该文章重新对Web服务器进行配置。