服务器端自动缩小文件大小?

12

有没有一种自动减小静态内容的方法,然后自动从缓存中提供服务?类似于mod_compress/mod_deflate的工作方式?最好能够与压缩一起使用(因为压缩具有更明显的好处)。

我希望使用适用于lighttpd的解决方案,但我还没有找到任何东西,所以任何能够实现此功能的Web服务器都很有趣。

4个回答

8
您可以尝试使用nginx的第三方Strip模块:http://wiki.nginx.org/NginxHttpStripModule。任何您使用的模块都只会删除空格。如果您使用一个能理解您要压缩内容的缩小器,您将得到更好的结果。例如Google的Closure JavaScript编译器。它足够智能,知道变量是什么,并使其名称更短。去除空格的工具做不到这一点。我建议您离线进行缩小,除非您的网站流量非常低。但如果您想在生产环境中缩小,我建议使用nginx的代理缓存。或者您可以考虑使用memcached进行内存缓存,或者Redis进行相同的操作,但带有磁盘备份。

3
抱歉,我没有足够的声望来发布多个链接。是否把它用普通文本写出来? - Milche Patern

3

我决定通过PHP来实现这个功能(主要是因为我不想写一个lighttpd模块)。

我的脚本接收查询字符串,指定所请求文件的类型(js或css),以及这些文件的名称。例如,在我的网站上,CSS是这样添加的:

<link rel="stylesheet" href="concat.php?type=css&style&blue" ... />

这会将style.css和blue.css进行缩小和合并。

它使用JSMin-PHPcssmin

如果XCache可用,它还会缓存这些文件(因为缩小是昂贵的)。实际上,我计划更改脚本,以便在没有Xcache的情况下不进行缩小,但是我有Xcache并且感到无聊。

无论如何,如果其他人想要使用它,可以在这里找到它。如果您使用我的脚本,则需要更改isAllowed()函数以列出您的文件(仅返回true可能是安全的,但是列出我想允许的文件很容易)。


2
我使用 Microsoft Ajax Minifier,它带有一个 C# 库来压缩 js 文件。我在服务器上使用它,并为每个页面提供最多两个压缩后的 .js 文件(一个“静态”文件,整个网站都相同,一个“动态”文件,仅适用于该页面)。
Yahoo 的 YUI 压缩器也是一个简单的 Java .jar 文件,您也可以使用它。
我认为重要的事情不是逐个文件处理,而是需要将 .js 文件 合并 才能获得最大的好处。因此,“自动”解决方案实际上不会起作用,因为它必然只能逐个文件处理。

最重要的是,我不想手动运行脚本(是的,我知道我很懒)。每个页面上已经只有一个js和一个css文件。 - Brendan Long

2

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