如何在Web服务器上设置gzip压缩?

3
我有一个嵌入式Web服务器,总共有2兆的空间。通常为了客户方便,您需要gzip文件,但这会占用服务器空间。我读到可以对js文件进行gzip压缩并保存在服务器上。我在IIS上测试了一下,但没有成功。要使这个过程成功,我需要做什么?
以下是我想象中的步骤:
1. gzip foo.js 2. 更改html中的链接,指向foo.js.gz而不是.js 3. 添加某种响应头?
感谢您的帮助。
- fREW
编辑:我的web服务器不能及时处理任何内容。它不是Apache或IIS;它是ZiLog处理器上的二进制文件。我知道可以压缩流;我只听说过可以对文件进行压缩并保留压缩状态。
3个回答

5

正如其他人提到的,mod_deflate可以为您完成此操作,但我猜您需要手动执行此操作,因为它是嵌入式环境。

首先,在对foo.js进行gzip压缩后,您应该保留文件名foo.js。

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

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

Content-Encoding: gzip

这应该能解决问题。客户端请求foo.js文件,服务器返回Content-Encoding: gzip头部信息以及被gzip压缩过的文件,客户端会自动解压并解析。

当然,前提是你确定客户端能够理解gzip编码。如果不确定,你应该只在请求头中包含gzip编码时才发送被压缩过的数据。

Accept-Encoding: gzip

谢谢,如果您使用Apache来提供文件,但不想实时压缩(以节省服务器资源),那么如何控制此响应头呢? - Bram

1

在 Web 服务器上使用 gzip 压缩通常意味着压缩其输出以节省带宽 - 这不完全是您想要的。

查看此说明此示例


我知道,但我读过可以压缩静态文件的文章,如果我能做到,我会这么做。 - Frew Schmidt

1

如果你正在使用Apache,你可以使用mod_deflate,它可以实时压缩。

我认为你可能会因为认为gzip必须是一个文件而感到困惑。相反,考虑一下文件只是数据流,这个数据流可以在这里被压缩,传输后再在那里解压缩,而客户端甚至不需要考虑它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接