2012-09-06 12 views
9

Dane wyjściowe z Sphinx, generatora dokumentacji Pythona, dają dużą liczbę plików HTML. Każdy z nich ma nagłówek z dużą liczbą JavaScript i CSS obejmuje:Kompresowanie JS i CSS w statycznych plikach HTML

<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> 

Większość z nich minified indywidualnie, ale jest to nadal suboptimal ponieważ wymaga oddzielnych żądania do serwera WWW, gdy pamięć podręczna klienta jest pusta. Czy istnieje narzędzie takie jak kompresor YUI lub kompilator zamknięcia, który pobiera pliki HTML jako dane wejściowe, kompresuje wszystkie zewnętrzne skrypty zewnętrzne, a następnie przepisuje dane wyjściowe? Byłoby to podobne do tego, co robi django_compressor.

Odpowiedz

0

Są dwa komponenty, o które prosisz - takie, które łączą i minimalizują zasoby, i inne, które przepisują statyczne pliki HTML w celu użycia zminimalizowanych zasobów.

Dla pierwszego komponentu, sądzę, że można użyć this minify engine; jest zaprojektowany do dynamicznej obsługi stron, ale możesz dowiedzieć się, jak podłączyć się bezpośrednio do kodu lub zapisać dane wyjściowe w plikach statycznych (adres URL pozwala określić wiele plików).

Na drugim elemencie, to nie powinno być zbyt trudne do analizowania stronę jako XML (zakładając, że jest zgodna z XHTML) i znaleźliśmy żadnych <link> lub <script> tagów przechowywania kopii dokumentów bez tych elementów, zestawiają minified zasobów i dodaj je, gdy węzeł <head> zostanie zamknięty, odczytaj resztę pliku i zapisz skompilowany dokument XHTML. Jeśli jest to zbyt wiele, możesz również użyć wyrażeń regularnych, aby znaleźć i zamienić tagi: <link> i <script>; zwykle wyrażenia regularne nie mogą idealnie analizować XML, ale te znaczniki powinny być w porządku, ponieważ nie będą zagnieżdżane.

Jeśli chcesz połączyć to, co opisałem, ale potrzebuję więcej pomocy, zacznij od pytania.

2

Zgadzam się z powyższą odpowiedzią.

Możesz zrobić jeszcze jedną rzecz.

Umieść wszystkie skrypty za Body zamiast z nagłówka. Może to zwiększy prędkość ładowania.

1

Możesz spróbować Springboard. Myślę, że będzie dobrze pasował do twoich potrzeb.