Мне просто интересно.
В моем приложении PHP CMS я улавлю большую часть сгенерированного HTML в буферах, а затем, в нужном месте на странице шаблона, я очищаю их содержимое. Это делается моим собственным классом буферов, где я недавно добавил метод (sorta), чтобы минимизировать полученный HTML с помощью регулярного выражения, которое заменяет 2 или более пробелов на одно пробел .
Результатом этого является тот факт, что окончательный HTML не имеет никаких новых строк. Это прекрасно работает в браузере, и оно отображается отлично, без проблем.
Меня не интересует какой-либо другой метод минирования HTML или другие классы PHP, которые делают то же самое. У меня есть простой два лайнера, который делает все, что мне нужно, и полученный HTML намного меньше, чем раньше.
Меня интересует следующее: Есть ли недостатки в наличии .html-файла с контентом, который не имеет новых строк вообще и имеет весь исходный код в одной очень длинной строке?
Разумеется, помимо человеческой читаемости 🙂 Меня интересуют несколько технические (или, возможно, даже другие) причины, которые сделают это плохой практикой.
Некоторые прокси или браузеры могут иметь проблемы с очень большим HTML-файлом в одной строке.
Например, для JavaScript инструменты, которые минимизируют код, обычно добавляют разрывы строк через определенные промежутки времени.
Компилятор Closure намеренно добавляет разрывы строк каждые 500 символов или около того. Брандмауэры и прокси иногда повреждают или игнорируют большие файлы JavaScript с очень длинными строками. Добавление разрывов строк каждые 500 символов предотвращает эту проблему. Удаление разрывов строк не влияет на семантику скрипта. Влияние на размер кода невелико, и компилятор оптимизирует размещение строк, так что размер штрафа по размеру кода даже меньше, когда файлы загружаются.
UglifyJS делает то же самое:
–max-line-len (по умолчанию 32K символов) – добавить новую строку после символов около 32K. Я видел как FF, так и Chrome croak, когда весь код находился на одной строке около 670K. Pass -max-line-len 0, чтобы отключить эту функцию безопасности.