【问题标题】:Gzip static files previously instead of on the fly以前 Gzip 静态文件而不是动态文件
【发布时间】:2023-05-04 10:51:01
【问题描述】:

如果不使用 mod_deflate 或 mod_gzip,我会手动 gzip 一个 css 或 js 文件,获得类似的东西:

base.css.gz

我将其重命名为:

base.css

然后从 HTML 页面加载它,它会工作吗?

这在内存和资源非常有限的环境中可能很有用,例如网状网络中的无线接入点。

我也想问一下,在普通网站上做这样来节省服务器cpu的资源是否有意义?在我使用 mod_deflate 的那一刻,我认为使用这种方法,内容会在每次请求时即时压缩,是这样吗?是不是有点浪费资源?

【问题讨论】:

  • 你说的是 Apache 吗?在没有实际压缩的情况下欺骗 Web 服务器使用 HTTP 压缩看起来非常适合我。

标签: css performance compression gzip deflate


【解决方案1】:

我自己回答,因为没有人回答我的问题。

可以手动提供 gzip 压缩文件,例如 css,但它们需要由具有正确内容类型和压缩头的 web 服务器提供,只需从 标签不起作用。

这是一个使用 php 的示例:

<?php
header("Content-Encoding: gzip");
header("Content-Type: text/css");
echo file_get_contents("base.min.css.gz");
exit(0);

// no closing tag to prevent occasionally printing any chars

【讨论】:

    【解决方案2】:

    如果设置为对静态文件使用压缩,HTTP 服务器会为您缓存压缩文件 - 所以不用担心。

    IIS documentations here

    我不太喜欢 Apache,但是 mod_deflate 和 mod_cache 可以一起工作https://serverfault.com/a/220418/7869

    【讨论】:

    • 好的,但是在不使用 apache 且无法安装 mod_deflate 的设备上手动压缩文件呢?
    • 像什么?路由器不是网络服务器。 (好吧,有些人使用网络服务器来管理用户界面 - 但它们不是网络服务器。)
    • 所有专业路由器都安装了某种轻量级的http服务器,但是mod_deflate不能使用,因为他们没有足够的资源,所以最好在需要的时候压缩。