2010-05-26 44 views
9

有什么办法自动缩小静态内容,然后自动从缓存中提供它?类似于mod_compress/mod_deflate的工作?最好是我可以与压缩结合使用的东西(因为压缩有更明显的好处)。服务器端自动缩小?

我的首选项是与lighttpd一起工作,但我一直无法找到任何东西,所以任何可以做到这一点的Web服务器都会很有趣。

回答

4

您可以尝试的nginx的第三方地带模块:

http://wiki.nginx.org/NginxHttpStripModule

你使用任何模块只是要删除空白。通过使用能够理解你正在缩小的任务的缩小器,你会得到更好的结果。例如Google的Closure JavaScript编译器。

它足够聪明,知道变量是什么,并缩短它的名字。一个空白消除器不能做到这一点。

除非您的网站流量非常低,否则我建议您离线进行minifying。但是如果你想在你的生活环境中缩小,我推荐使用nginx的代理缓存。 (对不起,但我没有足够的声望发布多个链接)

或者您可以查看memcached的内存缓存或Redis的同样的事情,但与磁盘备份。

+3

“对不起,但我没有足够的声望发布多个链接”..如何用纯文本编写它? – 2014-09-05 14:08:14

2

我使用了Microsoft Ajax Minifier,它附带一个C#库来缩小js文件。我在服务器上使用它,每个页面最多提供两个压缩的.js文件(一个“静态”,在整个站点上是相同的,另一个是只针对该页面的“动态”文件)。

雅虎的YUI压缩器也是一个简单的Java .jar文件,您也可以使用它。

我认为重要的不是逐个文件地完成。你真的需要结合 .js文件才能获得最大收益。出于这个原因,“自动”解决方案并不真正起作用 - 因为它只能在逐个文件的基础上工作。

+0

最主要的是,我宁愿没有手动运行脚本(是的,我知道懒惰)。我每页只有一个js和一个css文件。 – 2010-05-26 01:40:18

3

我决定通过PHP来做这件事(主要是因为我不想写一个lighttpd模块)。

我的脚本接受一个查询字符串,指定请求的文件类型(js或css),然后是这些文件的名称。举例来说,在我的网站的CSS添加这样的:

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

这minifies并连接的style.css和blue.css

它采用JSMin-PHPcssmin

它还使用XCache缓存文件,如果它可用(因为缩小是昂贵的)。我实际上计划改变脚本,以便在Xcache不可用时不会缩小脚本,但是我拥有Xcache并且感到无聊。

无论如何,如果任何人想要它,它是here。如果你使用我的,你需要改变isAllowed()函数来列出你的文件(它可能是安全的,使它只是返回true,但很容易列出我想允许的)。