3

我有一个嵌入式网络服务器,它总共有 2 兆的空间。通常你 gzip 文件是为了客户的利益,但这会节省我们在服务器上的空间。我读到您可以只压缩 js 文件并将其保存在服务器上。我在 IIS 上进行了测试,但我一点运气都没有。在完成这项工作的过程的每个步骤中,我究竟需要做什么?

这就是我想象的样子:

  1. gzip foo.js
  2. 将 html 中的链接更改为指向 foo.js.gz 而不仅仅是 .js
  3. 在响应中添加某种标题?

非常感谢您的帮助。

-fREW

编辑:我的网络服务器不能即时做任何事情。它不是 Apache 或 IIS;它是 ZiLog 处理器上的二进制文件。我知道你可以压缩流;我刚刚听说您也可以将文件压缩一次并保持压缩状态。

4

3 回答 3

5

正如其他人提到的那样, mod_deflate 会为您执行此操作,但我想您需要手动执行此操作,因为它是嵌入式环境。

首先,您应该在 gzip 之后保留文件 foo.js 的名称。

您不应更改 html 文件中的任何内容。由于文件仍然是 foo.js

在(gzipped)foo.js 的响应标头中,您发送标头

Content-Encoding: gzip

这应该可以解决问题。客户端请求 foo.js 并接收 Content-Encoding: gzip 后跟 gzip 压缩文件,它会在解析之前自动解压缩。

当然,这假设您确定客户端理解 gzip 编码,如果您不确定,您应该只在请求标头包含时发送 gzip 压缩数据

Accept-Encoding: gzip
于 2008-10-17T15:37:57.213 回答
1

在网络服务器上使用 gzip 压缩通常意味着压缩它的输出以节省您的带宽——这并不是您的想法。

看这个描述 或者 这个例子

于 2008-10-17T14:33:29.637 回答
1

如果您使用的是 Apache,则使用mod_deflate,它会即时压缩。

我认为你会因为认为如果你 gzip 某些东西它必须是一个文件而感到困惑。相反,想想一个文件是如何只是一个数据流,并且该数据流可以在这里被压缩、传输和解压缩,而客户端甚至不必考虑它。

于 2008-10-17T15:06:03.440 回答