Подтвердить что ты не робот

Уплотнение/уменьшение динамического 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 во время выполнения? Как насчет инструмента для удаления лишних разрывов строк?

4b9b3361

Ответ 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