Уплотнение/уменьшение динамического html
Я использую django templating, и для удобства чтения у меня есть html, который выглядит примерно так:
{% if some_variable %}
text
{% else %}
nothing exists here
{% endif %}
{% for item in set %}
{% if forloop.first %}
...etc...
Он преобразуется в следующий html во время выполнения, включая тонны пробелов и возвращает:
text
<div>
<li
class='some_class
>
some text
</li>
</div>
etc...
Некоторые страницы даже работают до ~ 3000 строк html при просмотре источника страницы.
Есть ли инструмент для сжатия этого html во время выполнения? Как насчет инструмента для удаления лишних разрывов строк?
Ответы
Ответ 1
Для небольшого фона это делается намеренно, поскольку в настоящее время механизм шаблонов Django не заботится о дезинфекции строк, которые оценивают пробелы после того, как теги будут удалены, и это приведет к незначительным штрафам за производительность при обслуживании ответа, поскольку он включает в себя этап последующей обработки, который оценивает полное содержимое отображаемого шаблона.
Тем не менее, если вам нужно быстрое решение, я предлагаю вам использовать StripWhitespaceMiddleware
ответное ПО, которое удалит ложные пробелы из текстовых ответов, Это довольно быстро и просто, используя регулярное выражение, соответствующее самому шаблону. Более налоговая, но мощная альтернатива будет развертывать ответное промежуточное программное обеспечение, которое использует HTML-префикс, если вы действительно заботитесь о том, чтобы бедные люди все еще читали сырые ответы.
Ответ 2
django-htmlmin пакет является удивительным, он обеспечивает много контроля и функций, кроме того, он поддерживает HTML 5.
Ответ 3
Оглядываясь, я только что нашел django-конвейер, я просто попробовал, кстати, промежуточное ПО, и это именно то, что я ожидаю. Он минимизирует все html и текстовые узлы и не содержит javascript-узлы.
Реализация промежуточного ПО и базовый результат теста составляют около 4 минут, просто установите и активируйте промежуточное программное обеспечение после использования промежуточного программного обеспечения gzip или поверх настройки MIDDLEWARE_CLASSES.
https://github.com/cyberdelia/django-pipeline
http://django-pipeline.readthedocs.org/en/latest/
Ответ 4
Я думаю, что для минимизации шаблона Django следует использовать средство разработки для начинающих, например grunt-contrib-htmlmin
файлы перед их развертыванием на рабочий сервер.
Таким образом, процесс минимизации происходит в "время сборки" и сохраняет ресурс центрального процессора для минимизации HTML в "run-time".
Этот инструмент изначально предназначен для минимизации HTML, но также работает для шаблонов Django, когда я пробовал.
Ответ 5
Если вы используете с Nginx, его модуль Strip действительно делает отличную работу по очистке html для вас. Это в реальном времени и прозрачно. Вам не нужно заботиться обо всем после того, как вы правильно настроили его.
http://wiki.nginx.org/HttpStripModule
Ответ 6
"Я думаю, что для того, чтобы развернуть файлы шаблонов Django, прежде чем развертывать их на производственный сервер, следует использовать средство разработки для front-end, например grunt-contrib-htmlmin.
Мне нужно было сделать это некоторое время назад, чтобы увеличить производительность и уменьшить латентность. Я написал минимизатор шаблонов, который предварительно скроет HTML, CSS и Javascript в ваших шаблонах, чтобы страницы были сведены к минимуму. Он интегрируется в Django в качестве команды Django, понимает тонкости языкового языка Django и расширяется. Вы можете найти его на pypi по ссылке ниже:
django-template-minimizer