Answers:
我为Asp.Net编写了一个处理程序,该处理程序使用YUI压缩,连接和缓存输出。
事后看来,我应该在网站管理员而不是程序员网站上问这个问题。
您有3种选择:
选项1(使用CakePHP扩展):
将AssetPacker下载并安装到您的站点(这也需要jsmin和CSSTidy)。修改几行包含js文件的源代码。洗涤->冲洗->重复。瞧,剩下的事会自动为您完成。
如果您使用其他框架,很可能有一个工具可以为您完成此任务。这是Webdev世界中非常普遍的要求。
选项2(使用Apache mod):
看一下Apache的Google Pagespeed mod。它可以完成您描述的所有内容,甚至更多。
不过,请务必监视生产服务器的资源。有些人已经看到问题,这会以不良的方式增加服务器上的负载。我不是很肯定,但可能需要足够的静态内容策略才能有效。
选项3:
如果确实需要,您可以创建一些PHP魔术,将JS文件服务器端连接起来,并将所有的链接关系合并为一个,但是...这正是这两种策略已经在做的事情。
就个人而言,我强烈建议您不要使用此选项。
据我所知,Sprockets将与AssetPacker相同的JS文件串联在一起,只是将其实现为Ruby Gem。它没有做的是最小化js代码。因此,如果您使用它,那么也可以抓住jsmin gem。有关如何在CakePHP中使用Sprockets + JSMin的信息,请查看此内容。
我知道我强调CakePHP,但是...我假设,如果可以将插件适配CakePHP,那么将其适配于不同的框架也应该是微不足道的。
快速的Google搜索发现它可以组合CSS文件:http : //www.tothepc.com/archives/combine-merge-multiple-css-files/
对于ASP.NET项目,我已根据Karl Seguin的指示将其纳入了构建过程。
Karl在他的博客中对此进行了最好的描述,但简短的版本是设置一个包装YUICompressor的控制台应用程序。然后,您可以设置一个构建后任务,以针对站点中JS文件的位置调用该控制台应用程序。
为此,了解Python实际上可能有用。您可以很快学习Python。我大约两周前开始,而我的第一个应用程序(仍未完成)将做您想要的完全相同的事情。像DotLess编译器一样,它将具有监视功能,该功能可以查看文件或目录,如果它们发生更改,它将生成一个新文件。
Python对于其他维护任务也非常有用,我读过很多系统管理员喜欢使用它。
我创建了Minifpy:用Python3(兼容Mac OS,Windows和Linux)编写的一种工具,可以使用Python合并和缩小JS和CSS文件。
Minifpy使用非常简单的JSON配置文件来定义必须合并,最小化或不合并的文件:
{
"js": {
"minify_files": [
{"from": "static/file.js", "to":"static/file.min.js"},
],
"merge_files": [
{"from" : ["static/file1.js", "static/file2.js"], "to":"static/public.js", "to_min": "static/public.min.js"}
]
},
"css" : {
"minify_files": [
{"from": "static/file.css", "to":"static/file.min.css"},
],
"merge_files": [
{"from" : ["static/file1.css", "static/file2.css"], "to":"static/public.css", "to_min": "static/public.min.css"}
]
}
}
您也可以在CLI中使用此工具。
Minifpy可以检测到JS / CSS文件上的任何修改,并自动合并/最小化它们(对开发有用)。