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

PHP-флеш: как часто и наилучшая практика

Я только что закончил читать это сообщение: https://developer.yahoo.com/performance/rules.html#flush и уже выполнил флеш после загрузки верхней части моей страницы (head, css, верхний баннер/поиск/nav).

Есть ли какая-либо производительность при промывке? Есть ли такая вещь, как делать это слишком часто? Каковы наилучшие методы?

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

4b9b3361

Ответ 1

Описанная техника выглядит красиво, но имеет несколько подводных камней:

1) время между PHP script начало и конец невелико по сравнению с временем передачи; Кроме того, это сохраняет пользователя примерно на 0,5 секунды, согласно вашему источнику. Это для вас значительное количество времени?

2) этот метод не работает с буферизацией вывода gzip

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

4) после того, как вы сбросите флажок, вы не можете отправлять больше заголовков

5) (второстепенная проблема) ответ сервера будет поступать в кодированную кодировку, что означает, что клиент не будет знать размер заранее (поэтому при загрузке файла не будет отображаться "x% done" ).

С другой стороны, если вы ожидаете, что ваш script будет запущен на время ожидания (20+ секунд), может потребоваться отправить некоторые данные (например, пробелы), чтобы браузер не синхронизировал соединение.

Ответ 2

Вниз сторона заключается в том, что вы не можете gzip содержимого, а также очищать его от afaik, поэтому я всегда предпочитал gzip, а не флеш.

Некоторые версии Microsoft Internet Explorer начнут отображать страницу только после того, как они получили 256 байтов вывода, поэтому вам может потребоваться отправить лишние пробелы перед чтобы эти браузеры отображали страницу.

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

Ответ 3

Я думаю, что флеш действительно прекрасный механизм настройки. Браузеры используют только около 8 потоков для загрузки контента (в зависимости от браузера). Если у вас 15 изображений, браузер начнет загружать 8 изображений и не будет загружать что-либо еще до тех пор, пока один из них не завершится, затем он начнет загружать следующее изображение и т.д. После промывки после заголовка вы в основном говорите браузеру, что он может начать загрузку. К тому времени, когда остальная часть страницы будет доставлена ​​(т.е. Через 5 секунд), браузер, возможно, уже закончил загрузку файлов css и javascript. Это освободит загрузочные потоки для другого содержимого.

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

Ответ 4

После точки Piskvor - если вы ожидаете ожидание 20s +, вам может быть лучше предоставить базовую страницу (которая может быть gzipped) и использовать Ajax для обновления страницы, когда медленный процесс завершен. Однако вы начинаете нарушать базовую полезность статического html.