服务器端自动缩小?
Posted
技术标签:
【中文标题】服务器端自动缩小?【英文标题】:Server-side auto-minify? 【发布时间】:2011-02-23 23:04:52 【问题描述】:有没有办法自动缩小静态内容,然后自动从缓存中提供它?类似于有 mod_compress/mod_deflate 工作?最好是我可以与压缩结合使用的东西(因为压缩有更明显的好处)。
我的偏好是适用于 lighttpd 的东西,但我找不到任何东西,所以任何可以做到这一点的网络服务器都会很有趣。
【问题讨论】:
【参考方案1】:你可以试试 nginx 的第三方 Strip 模块:
http://wiki.nginx.org/NginxHttpStripModule
您使用的任何模块都只会删除空格。通过使用能够理解您正在缩小的任何内容的缩小器,您将获得更好的结果。例如Google 的 Closure javascript 编译器。
知道什么是变量并使其名称更短是足够聪明的。空格去除器无法做到这一点。
除非您的网站流量非常低,否则我建议您减少离线。但是如果你想在你的实时环境中缩小我推荐使用 nginx 的代理缓存。 (抱歉,我没有足够的声誉发布多个链接)
或者您可以查看 memcached 以获取内存缓存或 Redis 以获取相同的内容,但具有磁盘备份。
【讨论】:
“对不起,我没有足够的声誉来发布多个链接”.. 用纯文本写怎么样?【参考方案2】:我决定通过 php 来做这件事(主要是因为我不想写一个 lighttpd 模块)。
我的脚本接受一个查询字符串,指定所请求文件的类型(js 或 css),然后是这些文件的名称。例如,在我的网站上,CSS 是这样添加的:
<link rel="stylesheet" href="concat.php?type=css&style&blue" ... />
这会缩小并连接 style.css 和 blue.css
它使用JSMin-PHP 和cssmin。
如果可用,它还会使用XCache 缓存文件(因为缩小成本很高)。我实际上打算更改脚本,以便在 Xcache 不可用时它不会缩小,但我有 Xcache,我很无聊。
无论如何,如果其他人想要它,那就是here。如果您使用我的,则需要更改 isAllowed()
函数以列出您的文件(让它返回 true 可能是安全的,但只列出我想要允许的文件很容易)。
【讨论】:
【参考方案3】:我使用带有 C# 库的 Microsoft Ajax Minifier 来缩小 js 文件。我在服务器上使用它并为每页提供最多两个缩小的 .js 文件(一个“静态”文件在整个站点中相同,一个“动态”文件仅针对该页面)。
Yahoo 的 YUI 压缩器也是一个简单的 Java .jar 文件,您也可以使用它。
我认为,重要的是不要逐个文件地进行。您确实需要合并 .js 文件以获得最大收益。出于这个原因,“自动”解决方案并不能真正发挥作用——因为它必然只能在逐个文件的基础上工作。
【讨论】:
主要是我宁愿不必手动运行脚本(是的,我知道懒惰)。我已经每页只有一个js和一个css文件了。【参考方案4】:如果您使用 Nginx 而不是 lighttpd,那么您可以利用 Nginx 的 embedded Perl support 来利用 Perl 模块 JavaScript-Minifier 来缩小和缓存服务器端的 JS。
以下是有关如何实现此目的的详细信息:wiki.nginx.org/NginxEmbeddedPerlMinifyJS
【讨论】:
以上是关于服务器端自动缩小?的主要内容,如果未能解决你的问题,请参考以下文章