Скорость загрузки содержимого страниц

12 3
Jaf4
На сайте с 03.08.2009
Offline
804
1552

Идем на пингдомтулс, делаем замер скорости загрузки страницы, видим, что она разбита на несколько этапов. Удивляемся, проверяем разные сайты, здесь скриншоты слева направо

сайт на самописе, вордпресс и хтмл (инклюды + JS).

1-я строка везде это запрос DNS.. А вот остальное как и на что делится, я понять не могу. На одном сайте была ступенька задержка при ожидании загрузки счетчика liru, я его перенес в подвал, более его не ждут, но ступенька образовалась в другом месте, этот сайт хтмл, последний на скрине.

Вопросы классические: WTF и что можно ли это как-то победить, чтобы, например отгружались изображения и скрипты не пачками, а одновременно. В канал там не упирается, по крайней мере на двух последних скринах точно, в производительность сервера тоже.

New! NVMe VPS от SmartApe.ru (https://goo.gl/eoYYkS)
SeVlad
На сайте с 03.11.2008
Offline
1609
#1
Jaf4:
WTF и что можно ли это как-то победить, чтобы, например отгружались изображения и скрипты не пачками, а одновременно.

Ты упускаешь один момент: "одновременность" кроме всего прочего зависит от одновременности запросов ЮА.

Ну и как бэ реальной одновременности не существует. Все запросы делаются по мере получения ответов на предыдущие запросы. А вот ко-во запросов (и полученных ответов) зависит от конкретного ЮА (в старой опере хорошо видно было - это настраиваемо).

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
Jaf4
На сайте с 03.08.2009
Offline
804
#2

получили днс, получили заголовок и html (там хтмл-я копейки байты) с включениями, начинаем подтягивать включения (картинки, скрипты), получаем размеры страниц, начинаем разворачивать верстку с учетом размера картинок..

От чего зависит очередность?

Вот есть, допустим, тестовая страница, без скриптов, текст с разметкой + несколько изображений. От чего там зависит последовательность получения контента от сервера?

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

SeVlad:
Все запросы делаются по мере получения ответов на предыдущие запросы.

Но на графике полная фигня.. ладно бы скрипт запросил что-то или картинку по очереди хтмл попросил подтянуть - начало подтягиваться. А то я не могу проследит очередность. Почему эта картинка лезет в первой пачке, а эту кто-то решил (сервер или юзерагент) получить во второй пачке.

SeVlad
На сайте с 03.11.2008
Offline
1609
#3
Jaf4:
От чего зависит очередность?

От расположения в коде. Но там есть важный нюанс: не все браузеры отправят запрос пока не получат блок полностью. Типа защита от разваливания страницы. (как яркий пример: с таблицами не всё гладко\просто. Было во всяком случае. Как сейчас ЮА парсят tr\td - я давненько не интересовался, но думаю ничего кардинально не изменилось)

Вот старой опере (и опере-мини тоже вроде бы) как раз на это было плевать, за счёт чего она и славилась быстротой получения контента (один из факторов её скорости): правильная отрисовка и выравнивание страницы происходила уже по мере получения остального.

[umka]
На сайте с 25.05.2008
Offline
456
#4

Чтобы запараллелить процессы, можно разнести контент по поддоменам.

Например

http://img.site.ru/тут_картинки

http://css.site.ru/тут_стили

http://js.site.ru/тут_скрипты

и т.д.

В некоторых случаях это немного увеличит скорость загрузки. И немного увеличит нагрузку на сервер.

Лог в помощь!
Jaf4
На сайте с 03.08.2009
Offline
804
#5
SeVlad:
От расположения в коде. Но там есть важный нюанс: не все браузеры отправят запрос пока не получат блок полностью. Типа защита от разваливания страницы.

Блок - это порция контента из картинок и скриптов? От чего зависит этот блок, кто решает что попадает в блок, а что нет, Юзерагент?

SeVlad:
Как сейчас ЮА парсят tr\td - я давненько не интересовался, но думаю ничего кардинально не изменилось

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



---------- Добавлено 08.11.2013 в 20:10 ----------

'[umka:
;12320731']Чтобы запараллелить процессы, можно разнести контент по поддоменам.
==============
В некоторых случаях это немного увеличит скорость загрузки. И немного увеличит нагрузку на сервер.

обращение на другой домен не повлечет за собой еще одно обращение к DNS? У меня на графиках это сжирает весьма приличный % от загрузки страниц.

[umka]
На сайте с 25.05.2008
Offline
456
#6
Jaf4:
обращение на другой домен не повлечет за собой еще одно обращение к DNS? У меня на графиках это сжирает весьма приличный % от загрузки страниц.

Повлечёт, но во-первых эти запросы кэшируются, а во-вторых, если запросы к DNS отжирают приличный %, это значит, что что-то не в порядке или с вашим DNS (обслуживающим сайт) или с DNS вашего интернет-провайдера (откуда вы смотрите).

Vladimir
На сайте с 07.06.2004
Offline
530
#7
Jaf4:

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

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

---------- Добавлено 08.11.2013 в 23:42 ----------

SeVlad:
От расположения в коде. Но там есть важный нюанс: не все браузеры отправят запрос пока не получат блок полностью. Типа защита от разваливания страницы.

От расположения в коде, чтобы загрузка и особенно отображение страницы в браузере шло последовательно без ожиданий: верстка делается отдельными блоками: "составленными друг на друга блоками" . В большинстве же случаев на сайтах вложенность блоков в другдруга существенная.

= Блок в данном случае - див, таблица...

= получение и разворачивать, по сути два разных процесса. Браузер в зависимости от верстки, может начать прорисовывать страницу с получением файлов, а может начать только с получением всех файлов страницы

---------- Добавлено 08.11.2013 в 23:48 ----------

Jaf4:
Идем на пингдомтулс, делаем замер скорости загрузки страницы, видим, что она разбита на несколько этапов. Удивляемся, проверяем разные сайты, здесь скриншоты слева направо
Jaf4:
можно ли это как-то победить, чтобы, например отгружались изображения и скрипты не пачками, а одновременно. .

= этапы: параллельных загрузок файлов с сервера может быть не более 5ти, насколько помню

= параллельностью загрузки с других адресов -> img.domen, или domen2

Jaf4:

обращение на другой домен не повлечет за собой еще одно обращение к DNS? У меня на графиках это сжирает весьма приличный % от загрузки страниц.

Надо смотреть баланс между много подключений и выигрышем в параллености загрузки

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

Файлы дизайна: Загружается вначале файл CSS, и только после его загрузки, файлы картинок прописанные в файле CSS -> однозначно не с доменного хоста, чтобы не мешались

Файлы скриптов туда же.

Обычно дизайнеры верстальщики такие умельцы...наваяют 10ток файлов css - все собрать в один файл. Скрипты тоже по возможности в минимум файлов - надробят мелких скриптиков и насоздают пачку файлов

Аэройога ( https://vk.com/aeroyogadom ) Йога в гамаках ( https://vk.com/aero_yoga ) Аэройога обучение ( https://aeroyoga.ru ) и просто фото ( https://weandworld.com )
Jaf4
На сайте с 03.08.2009
Offline
804
#8
'[umka:
;12320962']Повлечёт, но во-первых эти запросы кэшируются, а во-вторых, если запросы к DNS отжирают приличный %, это значит, что что-то не в порядке или с вашим DNS (обслуживающим сайт) или с DNS вашего интернет-провайдера (откуда вы смотрите).

я измеряю скорость со стороннего ресурса

Идем на пингдомтулс, делаем замер скорости загрузки страницы

На графике видно (самая верхняя строчка на всех трех скринах), что и сколько примерно занимает. Скорость работы сервера в принципе быстрая, поэтому и запрос ДНС становится видно по времени, они становятся соизмеримыми с временем ответа сервера. Чтобы было примерно понятен масштаб, на первом скрине (самопис) страница открывается ~2.5 сек. На втором 1.2 сек, на третьем менее 1 сек. Во всех случаях NS-серверы крупных регистраторов.

---------- Добавлено 08.11.2013 в 21:46 ----------

Nadejda:
Сожмите с помощью PHP, у меня тоже хостинг не позволяет, PHP отлично справляется. Если движок WP , достигается добавлением одной строчки в файл

Бросите в меня этой строчкой и местом куда ее нужно вставить? Я хочу попробовать сжимать данные и посмотреть, как это будет влиять на скорость открытия страницы.

Жмется только код страницы или весь поток, включая css?



От расположения в коде


= этапы: параллельных загрузок файлов с сервера может быть не более 5ти, насколько помню
= параллельностью загрузки с других адресов -> img.domen, или domen2

Если на графики посмотреть, можно увидеть, что "порции" содержат точно больше 5 файлов.



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

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



Файлы дизайна: Загружается вначале файл CSS, и только после его загрузки, файлы картинок прописанные в файле CSS -> однозначно не с доменного хоста, чтобы не мешались
Файлы скриптов туда же.

в примере на хтмл естественно сначала объявляется css, где описана бОльшая часть картинок дизайна, потом скрипты, потом уже из тела документа запрашиваются картинки. Так, по идее, на всех трех примерах. Это правильно?



Обычно дизайнеры верстальщики такие умельцы...наваяют 10ток файлов css - все собрать в один файл. Скрипты тоже по возможности в минимум файлов - надробят мелких скриптиков и насоздают пачку файлов

в третьем примере всего 3 файла CSS:

<link rel="stylesheet" href="css/reset.css" type="text/css" media="all">

<link rel="stylesheet" href="css/layout.css" type="text/css" media="all">

<link rel="stylesheet" href="css/style.css" type="text/css" media="all">

+ CSS для IE ie6.css

Это в на самом простом сайте (хтмл + SSI +JS)

Шаблон перепиленный фриварный, добалены пару скриптов, переделана расцветка, картинки ну и по мелочи.

А вот в первом там огромное количество мелких сктиптиков и скриптов, у многих еще и свои css, все они объявляются в заголовке документа.

[umka]
На сайте с 25.05.2008
Offline
456
#9
Jaf4:
я измеряю скорость со стороннего ресурса

Может быть, ресурс далеко от вашего сайта? :)

Днс-ы и сайты рекомендуется держать ближе к целевой аудитории, чтобы минимизировать задержки в сети.

Jaf4
На сайте с 03.08.2009
Offline
804
#10

2 сайта хостятся в России, 1 в Германии. Сможете сказать какой где, глядя на графики?

Проверка из Амстердама (Нидерланды, Европа).

Первый и третий сайты - сервер в России. Второй - в Германии.

Пинги до места неплохие.

Кстати, вот давний пример того, что пинг Москва-Москва (Корбина -мажордомо), может быть больше чем Москва - Нюрнберг (Корбина - дц хетзнера, вроде там кейвеб.де).

Я не парюсь самой скоростью открытия сайтов в браузере, хотя это конечно цель, да, но сейчас мне интересно, что можно еще сделать.

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий