Минимизировать HTML, сомнения и вопросы
-
28-09-2019 - |
Вопрос
Минимизация HTML является единственной секцией на Скорость страницы Google где есть еще комната для улучшения.
Мой сайт все динамически, а HTML уже Deflated
Таким образом, нет никаких причин поместить больше давления на сервер (я не хочу минимизировать страницы в режиме реального времени перед отправкой).
Что я мог сделать, это минимизировать файлы шаблонов. Мои шаблоны файлов - это смесь PHP
и HTML
Поэтому я придумал какой-нибудь код, который я думаю, довольно безопасен, но хотел бы быть пересмотренным сообществом.
// this will loop trough all template files
// php is cleaned first so that line-comments will not interfere with the regex
$original = file_get_contents($dir.'/'.$file);
$php_clean = php_strip_whitespace($dir.'/'.$file);
$minimized = preg_replace('/\s+/', ' ', $php_clean);
Это сделает мои шаблонные файлы как один очень длинный файл, чередующийся с некоторыми местами, где содержится содержимое БД. Источник домашнего страницы Google выглядит более или меньше, как то, что я получаю так, чтобы я задаюсь вопросом, следуют ли они подобным подходу.
Вопрос 1: Вы антеципатные потенциальные проблемы?
Вопрос 2: Есть ли в любом случае лучше (более эффективно для этого)?
И, пожалуйста, помните, что я не пытаюсь проверить HTML, поскольку шаблоны не являются действительными HTML (например, верхний колонтитул и нижний колонтитул включает в себя.
Редактировать: Принимайте во внимание, что файлы шаблонов будут минимизированы на развертывании. Поскольку файлы CSS и JavaScript сводится к минимуму и сжимаются с использованием компрессора и замыкания YUI, файлы шаблонов будут минимизированы как-мудрый, на развертывании. Не на клиент-запрос.
Спасибо.
Решение 4
Я бегал тесты на всех моих сайтах на пару недель, и могу сказать, что этот метод довольно последовательно. Это только повлияет на содержание шаблона, поэтому существует мало риска возиться с неизвестным <pre>
или похожие.
Это бежит до Развертывание, так что на сервере нет влияния на сервер - на самом деле должен быть немного ускоренной, так как файл становится меньше.
Помните, что все содержимое, которое происходит из базы данных не будет Понятую какое-либо влияние, как, как, как сказал, это работает до развертывания и только на шаблонах файлов.
Метод шворует достаточно твердые, чтобы передать его в производство.
Если что-то пойдет не так, я опубликую это здесь.
Другие советы
Собственный Шаблоны закрытия (соя) Полосы пробелов в конце строки по умолчанию, и дизайнер шаблона явно вставляет пространство с использованием {sp}
. Отказ Это, вероятно, не достаточно хорошая причина, чтобы выключить от PHP, но я просто хотел привлечь его к вашему вниманию.
Кроме того, реализуйте, что HTML 4 позволяет исключить некоторые теги, как рекомендовано документацией скорости страницы на Minificate HTML (http://code.google.com/p/page-speed/wiki/minifyhtml). Вы можете исключить </p>
, </td>
, </tr>
, и т. Д. Для получения полного списка элементов, для которых вы можете пропустить конечный тег, поиск "- O
«В HTML 4 DTD (http://www.w3.org/tr/rec-html40/sgml/dtd.html). Вы даже можете пропустить <html>
, <head>
, <body>
, и <tbody>
Теги полностью, как начать, так и конечные теги являются необязательными (»O O
"В DTD).
Вы также можете опустить цитаты вокруг атрибутов (http://www.w3.org/tr/rec-html40/intro/sgmltut.html#h-3.2.2), например id
, class
(с именем одного класса), а также type
которые имеют простой контент (т. Е. Матчи /^[-A-Za-z0-9._:]+$/
). Для атрибутов, которые имеют одно возможное значение, вы можете исключить значение (например, просто сказать просто checked
скорее, чем checked=checked
).
Некоторые люди могут найти эти советы отталкивающими, потому что мы были обусловлены настолько много лет, чтобы подготовиться к предстоящему миру простых парсеров LALR для XHTML. Таким образом, инструменты, такие как HTML TIDY Dave Raggett генерируют HTML с надлежащим закрытием и цитатами вокруг значений атрибутов. Но давайте посмотрим на него, все браузеры уже имеют анализаторы, которые понимают HTML 4, любой новый браузер будет использовать анализатор HTML 5, а не XHTML, и мы должны получить удобную запись HTML, который оптимизирован для размера.
Что говорят, помимо пары крупных компаний, таких как Google и Facebook, я предполагаю, что размер страницы - это незначительный компонент задержки, поэтому, если вы оптимизируете свой собственный сайт, это, вероятно, из-за ваших собственных навязчивых тенденций, а не производительность.
Белое пространство может быть значительным (например, в pre
элементы).
Когда у меня была особенно большая страница (то есть достаточно велика, чтобы быть извлечена в министерстве HTML), я использовал HTML Tidy и кэшировать результаты.
tidy -c -n -omit -ashtml -utf8 --doctype strict \
--drop-proprietary-attributes yes --output-bom no \
--wrap 0
Я думаю, что вы в конечном итоге запустите проблемы с временем загрузки с таким подходом, так как содержимое Get Contents, Strip Thitespace и PREG заменить вызовы, которые затрагивают намного больше дольше, чем любая пропускная способность, которую министерзированный HTML сохраняет вас.