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

Минимизирует и объединяет файлы JS/CSS и использует спрайты для изображений, которые по-прежнему обеспечивают преимущества производительности при использовании HTTP/2?

С новым протоколом HTTP/2 накладные расходы, созданные повторенными HTTP-запросами на один и тот же сервер, значительно сократились.

Имея это в виду, существуют ли какие-либо значительные преимущества в производительности для минимизации и конкатенации файлов JavaScript/CSS и объединения изображений в спрайты? Или эти методы больше не полезны при использовании HTTP/2?

4b9b3361

Ответ 1

Они по-прежнему полезны. HTTP/2 снижает влияние некоторых из этих методов, но не устраняет их воздействия.

Минимизация остается такой же полезной, как когда-либо. Хотя HTTP/2 вводит новое сжатие для заголовков сообщений, это не имеет ничего общего с минимизацией (что касается тел сообщений). Алгоритмы сжатия для тел сообщений одинаковы, поэтому минимизация экономит столько же, сколько и раньше.

Конкатенация и спрайты будут иметь меньшее влияние, чем раньше, но они все равно будут иметь некоторое влияние. Самая большая проблема с загрузкой нескольких файлов вместо одного файла с HTTP/1 на самом деле не является проблемой на стороне HTTP, сама по себе: накладные расходы на основе полосы пропускания требуют отдельного запроса каждого файла, но это затмевается по времени накладные расходы на срыв сеанса TCP/IP, когда вы закончите с одним файлом, затем запустите новый для следующего и повторите это для каждого файла, который вы хотите загрузить.

Самый большой упор в HTTP/2 - устранение накладных расходов по времени: HTTP/1.1 попытался сделать это с помощью конвейерной обработки, но он не уловил в браузере (Presto - единственный движок, который получил это полностью правильно, и Престо мертв). HTTP/2 - еще одна попытка, которая улучшает методы HTTP/1.1, а также делает эту вещь не факультативной, и она будет более успешной. Он также устраняет некоторые из накладных расходов на основе полосы пропускания при создании нескольких запросов путем сжатия заголовков, но он не может полностью устранить эти накладные расходы, и при загрузке нескольких файлов эти запросы еще нужно сделать (как часть одного сеанса TCP/IP, поэтому накладные расходы меньше, но не ноль). Таким образом, хотя влияние конкатенации и написания пропорционально меньше, все еще есть некоторое влияние, особенно если вы используете много файлов.

Еще одна вещь, которую следует учитывать, когда речь заходит о конкатенации и написании, - это сжатие. Конкатенированные файлы аналогичных типов имеют тенденцию сжиматься лучше, чем отдельные файлы, поскольку алгоритм сжатия может использовать сходство между конкатенированными фрагментами данных. Аналогичный принцип применим к спрайтам: размещение похожих изображений в разных областях одного и того же файла обычно приводит к уменьшению файла, поскольку сжатие изображения может использовать сходства в разных регионах.

Ответ 2

Это может быть немного поздно, но я хочу указать на несколько альтернативных точек, которые также должны быть покрыты.

Во-первых, для минимизации обычно используется какая-то уклонение для JavaScript, которая имеет преимущества вне полосы пропускания - она ​​не позволяет людям легко анализировать код, что не позволяет обычным пользователям использовать многословные методы и идеи для вредоносных действий - даже хорошо построенные сайты могут иметь проблемы с этим. Конечно, это не подменяет безопасность, а продвинутые пользователи всегда могут расшифровать углубленный код.

Другим является то, что не все браузеры или соединения будут использовать HTTP/2, по крайней мере, не сразу, поэтому, если производительность некоторых функций HTTP/2 едва заметна на клиентах HTTP/2, почему бы не воспользоваться теми, все еще по HTTP/1.1?

Наконец, в конце дня лучший способ определить, как что-то влияет на скорость вашего сервера, - это сравнить его.

Ответ 3

До сих пор все ответы молчаливо предполагали, что вы захотите загрузить ВСЕ файлы .CSS и .JS для каждой страницы. Преимущество использования http/2 и хранения отдельных файлов .CSS и .JS заключается в том, что вы можете сбивать только те, которые вам нужны, а загрузка не всегда быстрее, чем эффективная загрузка.

Ответ 4

Да, это по-прежнему полезно.

Наряду с сжатием gzip, страница будет меньше.

Представьте, что вы используете очень медленную сеть GPRS (56 Кбит/с, 500 мс).

У вас есть 50 крошечных изображений, 30 javascripts и 20 css файлов.

Это означает, что с двумя параллельными соединениями вы должны подождать более 100 * 500 мс только для запросов.

Теперь каждое изображение составляет около 3-4kb. Что может занять несколько миллисекунд (5-8?).

Теперь файлы CSS и Javascript варьируются от 20 КБ до 600 КБ.

Это убьет ваш сайт с огромным временем передачи.

Сокращение времени на перенос файлов приведет к увеличению скорости, с которой загружается веб-сайт.

Итак, ДА, это по-прежнему полезно!

Ответ 5

Minifying JS все еще может уменьшить размер многих символов; inflatedJargonSymbolizerTokenManager станет _a. Один из примеров, который я нашел, показал, что JQuery GZipped по-прежнему вдвое превышает размер JQuery.min GZipped.

Я также хочу отметить, что, хотя вы не подразумевали иначе, комментарий dystroy правильный, и на самом деле противоречит плохо написанному объяснению Википедии; "Конкатенирование" файлов JavaScript теперь может быть менее полезным. Их минимизация по-прежнему имеет свои преимущества. Просто хотел упомянуть об этом, если вы случайно получили там какую-то информацию. На самом деле, я бы отредактировал страницу самостоятельно, если бы не беспокоился о том, чтобы попасть в битву за редактирование.

У CSS, вероятно, меньше возможностей для сокращения символов. Теоретически все, что он получит, это удаление пробелов и комментариев.