压缩静态HTML文件中的JS和CSS

时间:2012-09-06 14:35:51

标签: javascript html css minify python-sphinx

python文档生成器Sphinx的输出会产生大量HTML文件。每个人都有一个包含大量JavaScript和CSS的标题包括:

<link rel="stylesheet" href="../_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="../_static/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<link rel="stylesheet" type="text/css" href="../_static/custom.css" />
<link rel="stylesheet" type="text/css" href="../_static/colorbox/colorbox.css" />
<script type="text/javascript" src="../_static/colorbox/jquery.colorbox-min.js"></script>

其中大多数都是单独缩小的,但这仍然不是最理想的,因为当客户端的缓存为空时,它需要单独请求Web服务器。是否有像YUI Compressor或Closure Compiler这样的工具将HTML文件作为输入,压缩所有单独的外部链接脚本,然后重写输出?这与django_compressor的做法类似。

3 个答案:

答案 0 :(得分:2)

同意以上回答。

你可以做另外一件事。

将所有脚本放在Body之后而不是标题。可能会增加你的加载速度。

答案 1 :(得分:1)

您可以尝试Springboard。我认为它非常适合您的需求。

答案 2 :(得分:0)

您需要两个组件 - 一个组合并缩小您的资源,另一个组件重写静态HTML文件以使用缩小的资源。

对于第一个组件,我相信你可以使用this minify engine;它被设计为动态地提供页面,但你可以弄清楚如何直接挂钩代码或将输出保存到静态文件(URL允许你指定多个文件)。

对于第二个元素,将页面解析为XML(假设它是有效的XHTML)并找到任何<link><script>标记应该不会太困难,存储没有这些标记的文档副本元素,编译缩小的资源,并在<head>节点关闭后添加它们,读取文件的其余部分,并存储构建的XHTML文档。如果这太多,您也可以使用正则表达式来查找和替换<link><script>标记;通常正则表达式不能完美地解析XML,但这些标记应该没问题,因为它们不会嵌套。

如果你想把我所描述的东西放在一起但需要更多的帮助,那就问问吧。