Я только что закончил читать этот пост: https://developer.yahoo.com/performance/rules.html#flush и уже реализовал флеш после загрузки верхней части моей страницы (head, css, top banner / search / nav) ,
Есть ли какая-либо производительность при промывке? Есть ли такая вещь, как делать это слишком часто? Каковы наилучшие методы?
Если я собираюсь ударить по внешнему API для данных, было бы ли смысл рухнуть перед рукой, чтобы пользователь не ожидал, когда эти данные вернутся, и может, по крайней мере, получить некоторые данные перед рукой?
Описанная техника выглядит красиво, но имеет несколько подводных камней:
1) время между началом и окончанием скрипта PHP невелико по сравнению с временем передачи; Кроме того, это сохраняет пользователя примерно на 0,5 секунды, согласно вашему источнику. Это для вас значительное количество времени?
2) этот метод не работает с буферизацией вывода gzip
3) если вы слишком часто зачищаетесь, вы будете отправлять почти пустой пакет на флеш, что может фактически увеличить время загрузки (при медленных, шумных подключениях).
4) после того, как вы сбросите флажок, вы не можете отправлять больше заголовков
5) (второстепенная проблема) серверный ответ будет поступать в кодированную кодировку, что означает, что клиент не будет знать размер заранее (поэтому при загрузке файла не будет отображаться «x% done»).
С другой стороны, если вы ожидаете, что ваш скрипт будет работать в течение длительного времени (20 + секунд), может потребоваться отправить некоторые данные (например, пробелы), чтобы браузер не мог синхронизировать соединение.
Вниз сторона заключается в том, что вы не можете gzip содержимого, а также очищать его от афаика, поэтому я всегда предпочитал gzip, а не флеш.
Некоторые версии Microsoft Internet Explorer начнут отображать страницу только после того, как они получат 256 байтов вывода, поэтому вам может потребоваться отправить лишние пробелы перед тем, как очистить, чтобы эти браузеры отображали страницу.
Это делает это не идея, так как кажется, что добавление большего количества данных не очень полезно.
Я думаю, что флеш действительно тонкий механизм настройки. Браузеры используют только около 8 потоков для загрузки контента (в зависимости от браузера). Если у вас 15 изображений, браузер начнет загружать 8 изображений и не будет загружать что-либо еще до тех пор, пока один из них не завершится, затем он начнет загружать следующее изображение и т. Д. После промывки после заголовка вы в основном говорите браузеру, что он может начать загрузку. К тому времени, когда остальная часть страницы будет доставлена (т. Е. Через 5 секунд), браузер, возможно, уже закончил загрузку файлов css и javascript. Это освободит потоки загрузки для другого контента.
Вероятно, вы не хотите использовать флеш в любом другом месте, кроме как сразу после заголовка. Браузер обычно не отображает открытые теги html, поэтому доставка частичной страницы не будет отображаться быстрее. Старые версии IE вообще ничего не отображают до тех пор, пока не будет получено определенное количество данных или завершение доставки страницы.
Следуя точке Писквора – если вы ожидаете ожидание 20 секунд +, вам может быть лучше предоставить базовую страницу (которая может быть gzipped) и использовать Ajax для обновления страницы, когда медленный процесс завершен. Однако вы начинаете нарушать базовую полезность статического html.