Молниеносно быстрые сайты с помощью предзагрузки
От автора: в этой статье мы обсудим предзагрузку, что это, и как с ее помощью разработчики могут удивить посетителей высокой производительностью.
Что такое предзагрузка?
Оптимизировать сайт для первичной загрузки страниц это хорошо, но на высоко интерактивных сайтах пользователям этого уже мало.
А что если бы браузер знал, по какой ссылке кликнет пользователь, или на какую страницу он собирается перейти дальше, а контент бы автоматически появлялся на экране со скоростью света?
Браузеры уже сейчас так умеют. Некоторые основные браузеры достаточно умны, чтобы делать предсказания подобного рода по шаблонам просмотра пользователя, разметке документа и его структуре, устройству, связи и т.д. Поэтому браузеры уже сейчас стараются предугадать, какие ресурсы им понадобятся для создания страницы, на которую собирается перейти пользователь, чтобы загрузить их и отобразить страниц на максимальной скорости, когда пользователь зайдет на нее. Разработчики с помощью своих знаний сайта или приложения могут помочь браузерам точнее выделить эти необходимые ресурсы.
Это и есть предзагрузка, подсказка браузеру для предсказания желаний пользователя, чтобы потом с легкостью осуществить их.
JavaScript. Быстрый старт
Изучите основы JavaScript на практическом примере по созданию веб-приложения
Узнать подробнееПредзагрузка описана в спецификации Resource Hints, за авторством Ilya Grigorik. Ниже мы поговорим о:
DNS-предзагрузке;
предзагрузке ссылок/ресурсов;
пререндеринге (предзагрузке страницы).
DNS-предзагрузка
Интернет – сеть компьютерных IP-адресов (например, 87.87.87.87), связанных с человеческими хостами (например, yoursite.com). DNS – протокол, конвертирующий хосты в IP-адреса.
Каждый раз, когда браузер посылает HTTP-запрос ресурса на другой домен, несколько миллисекунд может тратиться на сопоставление домена с соответствующим IP-адресом.
Если на сайте есть виджеты Twitter или Facebook, Google Analytics и парочка пользовательских веб-шрифтов, значит, есть ссылки на другие домены. Это делает поиск DNS неизбежным.
DNS-предзагрузка помогает снизить время ожидания пользователей, так как браузер выполняет поиск DNS перед посылкой запроса на ресурсы, расположенные на других доменах.
Скажем, разработчики знают, что сайт пошлет запрос на somewidget.example.com. Они могут дать браузеру подсказку, чтобы тот выполнил предзагрузку DNS хоста, добавив атрибут rel в ссылку со значением dns-prefetch. Вот так:
<link rel=»dns-prefetch» href=»//somewidget.example.com»>
<link rel=»dns-prefetch» href=»//somewidget.example.com»> |
Теперь когда будет послан запрос на somewidget.example.com, браузер предварительно сделает поиск DNS, и пользователи получает результат немножко быстрее.
В настоящее время DNS-предзагрузка поддерживается во всех основных десктопных браузерах. Если поддержки нет, браузеры просто вытягивают ресурсы по старой схеме.
А что если браузер никогда не запросит предварительно загруженный по DNS ресурс? К счастью, DNS-предзагрузка – не затратная операция, так как посылается не более пары сотни байт. Она не замедлит ваш сайт.
Предзагрузка ссылок
Из спецификации о предзагрузке ссылок: «… используется для определения ресурса, который может понадобиться для следующего перехода, и который юзер агент ДОЛЖЕН загрузить, чтобы предоставить быстрый ответ, когда ресурс будет запрошен.»
Другими словами, если разработчики считают, что пользователи далее перейдут на определенную страницу, а браузеру для нее нужны какие-то критические ресурсы, то они могут использовать директиву prefetch. Она указывает браузеру на ресурсы, которые необходимо предзагрузить еще до перехода пользователей на страницу.
Помните, что предзагрузка работает только с кэшируемыми ресурсами, т.е. JS, изображениями и т.д. Код может быть таким:
JavaScript. Быстрый старт
Изучите основы JavaScript на практическом примере по созданию веб-приложения
Узнать подробнее<link rel=»prefetch» href=»//example.com/future-image.jpg»>
<link rel=»prefetch» href=»//example. |
Теперь браузер знает, что изображение future-image.jpg скоро понадобится, и он может предзагрузить его и хранить в кэше. Так как браузер выполнит всю затратную по времени работу по загрузке ресурсов в фоновом режиме, пользователи получат преимущество в виде супер быстрого рендеринга страницы с изображением future-image.jpg сразу после клика.
Предзагрузка ссылок создает у пользователей ощущение того, что сайт быстро загружается, но эта операция более затратна по сравнению с DNS-предзагрузкой. Если пользователь так и не зайдет на страницу, для которой необходимо предзагрузить файлы, то браузер скачает необязательные данные и забьет кэш.
На момент написания статьи предзагрузка ссылок поддерживается в последних версиях Chrome, Firefox, IE/Edge и Opera. Браузеры без поддержки просто проигнорируют подсказку.
Предзагрузка страниц/пререндеринг
Для предзагрузки страниц или пререндеринга необходимо просто добавить директиву prerender внутрь атрибута rel в ссылке:
<link rel=»prerender» href=»//example. com/future-page.html»>
<link rel=»prerender» href=»//example.com/future-page.html»> |
Происходит полный пререндиринг, буквально создается невидимая версия целой страницы, на которую собираются перейти пользователи, в том числе применяется CSS и JS. После клика страница-призрак мгновенно материализуется, заменяя старый контент.
Предзагрузка ссылок – затратная операция, но пререндеринг еще сильнее нагружает браузер. Браузер загружает всю страницу и все ее ресурсы, ожидая, что пользователи перейдут на нее, что может произойти, а может и нет.
На момент написания статьи пререндеринг поддерживается в IE/Edge, Chrome и Opera.
Кейсы использования для предзагрузки ссылок и пререндеринга
Предзагрузка ссылок и пререндеринг дорого обходятся браузеру, поэтому важно иметь четкие условия, когда их применять.
Разработчики, планирующие давать подсказки по ресурсам, должны иметь веские основания, почему эти ресурсы необходимо предзагрузить или сделать пререндер, основываясь на контенте сайта, поведении пользователя, аналитике и т. д.
Спецификация Resource Hints выделяет ряд кейсов использования предзагрузки ссылок:
Поисковые результаты – разумно предположить, что пользователям нужны эти результаты, поэтому они будут кликать по ссылкам, чтобы получить желаемый контент.
Постраничный контент – если пользователь читает первую страницу многостраничной статьи, то можно с уверенностью предположить, что он кликнет по ссылке, ведущей на следующую страницу.
Галерея изображений – разработчики Google используют предзагрузку на Picasa Web Albums. Если пользователи просматривают фото, разработчики вполне могут предположить, что они откроют и следующее фото, и они дают браузеру инструкцию скачать его как можно быстрее.
Также Santiago Valdarrama предлагает несколько полезных советов по тому, когда разработчики могут оправданно делать пререндеринг на сайте: «Когда будете думать, нужно ли делать пререндеринг полных страниц, учтите, что Google делает пререндер ТОП-результатов из поисковой выдачи, а Chrome делает пререндер на основе исторических шаблонов навигации пользователей.
Заключение
DNS-предзагрузка, предзагрузка ссылок и пререндеринг – мощные техники оптимизации. Если подойти к ним ответственно, используя знания разработчиков о контенте и поведении пользователей, то предзагрузка может значительно улучшить UX. А вы бы посоветовали сделать предзагрузку для ускорения сайта? Пишите в комментариях!
Редакция: Maria Antonietta Perna
Источник: //www.sitepoint.com/
Редакция: Команда webformyself.
JavaScript. Быстрый старт
Изучите основы JavaScript на практическом примере по созданию веб-приложения
Верстка-Мастер. От теории до верстки популярных шаблонов
Изучите современную верстку сайтов с нуля
ПодробнееСтадии загрузки страницы и скорость сайта
В качестве основных проблемных мест при загрузке страницы любого веб-ресурса можно выделить четыре ключевых момента.
- Предзагрузка страниц сайта – появление страницы в браузере пользователя. После некоторого времени ожидания загрузки при заходе на веб-ресурс у пользователя в браузере отображается нарисованная страница. В этот момент, вероятно, на странице отсутствуют рисунки и, скорее всего, не полностью функционирует JavaScript-логика.
- Интерактивная загрузка страниц сайта – появление интерактивности (и анимации) у загруженной веб-страницы. Обычно вся клиентская логика взаимодействия доступна сразу после первоначальной загрузки страницы (стадия 1), однако в некоторых случаях (о них речь пойдет чуть дальше) поддержка этой логики может (и должна, на самом деле) немного запаздывать по времени от появления основной картинки в браузере пользователя.
- Полная загрузка страницы сайта. Страница полностью появилась в браузере, на ней представлена вся заявленная информация, и она практически готова к дальнейшим действиям пользователя.
- Пост-загрузка страницы сайта. На данной стадии полностью загруженная страница может (в невидимом для пользователя режиме) осуществлять загрузку и кэширование некоторых ресурсов или компонентов.
Они могут потребоваться пользователю как при переходе на другие страницы данного сайта, так и для отображения каких-либо анимационных эффектов или добавления функционала ради удобства использования.
Для большинства сайтов на данный момент стоит различать только предзагрузку страницы (в которую по умолчанию включается интерактивная загрузка) и полную загрузку страницы. Пост-загрузка, к несчастью, сейчас используется крайне мало.
Рис.2. Стадии загрузки страницы
Расставляем приоритеты
Оптимизация скорости загрузки веб-страницы сайта сосредоточена на двух ключевых аспектах: ускорение предзагрузки и ускорение основной загрузки. Все основные методы сфокусированы именно на этом, потому что «загрузка» веб-страницы воспринимается пользователями как нечто находящееся посредине этих двух стадий. В идеале, загрузка страницы для пользователя должна заканчиваться сразу после предзагрузки, однако, добиться этого весьма сложно, и оправдано это далеко не во всех случаях.
Узкие места.
Первая и вторая стадия загрузки страниц сайта являются наиболее проблемными аспектами при анализе производительности. Это вполне понятно: загрузка первоначального HTML-файла, равно как и CSS- / JavaScript-файлов идет в один поток, – и на первое место выходит уменьшение числа запросов при загрузке. Как только узкое место преодолено (в идеале, у нас должен быть один-единственный файл, который получает пользователь) и в браузере страница отобразилась, мы можем начать запрашивать с сервера все остальные ресурсы. Самое главное, что это можно делать с помощью десятков дополнительных соединений (как этого добиться, рассказывается в пятой главе), ибо в браузере уже произошло событие готовности документа к дальнейшим действиям. Мы можем настроить логику кэширования, последовательную загрузку JavaScript-модулей или даже пост-загрузку стилевых правил. Все это уже будет слабо отражаться на фактической скорости первоначальной загрузки сайта: пользователь видит страницу в браузере, может с ней взаимодействовать (пусть даже сначала и не в полном объеме), для него она уже загрузилась (правда, только с психологической, а не с технической стороны). Но все эти приемы могут ускорить как загрузку следующих для пользователя страниц, так и упорядочить саму пост-загрузку. Как достичь этого эффекта и как распределить файлы и клиентскую логику между стадиями загрузки страницы, рассказано в четвертой главе.
Предзагрузка страниц на jQuery | XoZblog
Здравствуйте, уважаемые читатели XoZbloga! Для одного из моих проектов понадобился предзагрузчик страниц, в этой коротенькой статье хочу поделиться с Вами этим скриптом (работает на jQuery).
Пока искал, перепробовал довольно много похожих скриптов, большинством остался недоволен. Одни не работают в каком-либо браузере (чаще всего IE), другие конфликтуют с моим кодом javascript и тд. Остановился на QueryLoader2. Он производит предварительное загрузку изображений, фоновых изображений, а уже после показывает готовую страницу. Это версия доработана специально для тех, кто пользуется jQuery, дабы минимизировать конфликты. Проверял во всех браузерах (последних версий) и даже в Internet Explorer 7, 8, 9 — работает.
Просмотр демо страницы и скачивание исходников не доступно
Уважаемый читатель, XoZblog существует и развивается за счёт доходов от ненавязчивой рекламы. Если не затруднит, добавьте этот сайт в исключение AdBlock. Спасибо за понимание!
Как пользоваться?
Все очень просто. Главное подключить библиотеку jQuery и непосредственно сам скрипт, который находится в файле jquery.queryloader2.js
1 | <!— Подключаем библиотеку jquery —> |
А уже после вызывать QueryLoader следующим образом:
1 | $(document).ready(function () { |
Чтобы заставить его работать на iOS устройствах, используйте этот код:
1 | window.addEventListener(‘DOMContentLoaded’, function() { |
Опции
Вы также можете использовать следующие опции, чтобы настроить предзагрузчик страниц.
BackgroundColor
(строковое значение) цвет основного фона загрузчика (в шестнадцатеричном виде к примеру #FAFAFA).
barColor
(строковое значение) цвет фона полоски загрузки (в шестнадцатеричном виде).
barHeight
(числовое значение) Высота полоски загрузки в пикселях. По умолчанию: 1
deepSearch
(булево) найти все изображения в выбранном элементе. По умолчанию: true.
percentage
(булево) установить загрузку в процентах. По умолчанию: false.
completeAnimation
(строковое значение) установить тип анимации в конце. Варианты: «grow» и «fade». По умолчанию: grow.
minimumTime
(числовое значение) время в миллисекундах выделенное на процесс загрузки. Даже если страница уже загружена, пока время не истечет нам ее не покажут 🙂
В примере на демонстрационной странице загрузчик используется вот таким образом:
1 | $(document).ready(function () { |
На этом все! Если возникнут вопросы или предложения пишем комментарии! До связи )
P.S. : Если Ваш компьютер вышел из строя, не теряйте время, обратитесь в компьютерную помощь. Подарите шанс на выздоровление своему железному другу!
Источник статьи/урока: https://xozblog.ru
Правила перепечатки
Чтобы оставаться в курсе свежих статей и уроков подписывайтесь на еженедельную почтовую рассылку или на новостную ленту RSS. Спасибо!
Предварительная загрузка и ее использование на Facebook
Предварительная загрузка позволяет Facebook скачивать контент на мобильное устройство, прежде чем человек нажмет ссылку. Предположим, что вы создали рекламу для мобильных устройств со ссылкой или призывом к действию, чтобы перенаправлять людей на мобильный сайт. Когда кто-то нажимает ссылку или призыв к действию в рекламе, часть веб-страницы, с которой она связана, может быть уже загружена, поэтому информация будет показана быстрее.
Facebook выполняет предварительную загрузку части органического и рекламного контента. Предварительная загрузка особенно полезна в условиях медленного или некачественного сетевого подключения. Она позволяет быстрее скачивать контент с мобильных сайтов, поэтому пользоваться приложением Facebook на устройствах Android и iPhone становится удобнее.
Рекламодатели и издатели также получают ряд преимуществ:
Повышается результативность рекламы или вовлеченность для веб-страницы из-за ускоренной загрузки мобильного сайта.
Сокращается раздражающая пауза между нажатием рекламы и полной загрузкой мобильного сайта рекламодателя.
Facebook пытается спрогнозировать вероятность того, что человек нажмет ссылку в Ленте новостей на мобильном устройстве. Если прогнозируемая вероятность соответствует требованиям, мы скачиваем начальную HTML-страницу, когда ссылка впервые появляется на экране устройства. Этот контент на короткое время кэшируется на устройстве.
Если человек нажимает на рекламу, Facebook загружает из кэш-памяти начальную страницу. После этого она выполняет обычные веб-запросы к серверу, чтобы загрузить оставшуюся часть контента.
В данный момент Facebook предварительно загружает HTML-код большинства мобильных сайтов. В качестве эксперимента мы также загружаем другие ресурсы, такие как CSS и JavaScript. Изображения сайта не кэшируются.
Как предварительная загрузка влияет на работу издателей и компаний, занимающихся измерениями?Предварительная загрузка может заметно увеличить показатели трафика и количества кликов для сторонних решений, выполняющих измерение на основе тегов. Это может происходить, когда маркетологи вручную размещают сторонние теги кликов в URL сайта своей рекламы. Из-за подобной настройки тегов предварительно загруженные данные перенаправляются на сторонний тег и могут быть учтены как клик.
Во избежание этого Facebook использует стандартную отраслевую методику — добавляет заголовок «X-Purpose:preview» в эти запросы, чтобы издатели и сторонние решения для измерения на основе тегов могли отличить клики, связанные с предварительной загрузкой данных, от обычных запросов или кликов.
Во избежание ошибок в подсчете кликов не забудьте обновить настройки своих систем измерения так, чтобы они фильтровали HTTP-запросы с этим заголовком.
Отключение предварительной загрузки контента на мобильном сайтеПри желании вы можете запретить Facebook предварительно загружать контент с вашего мобильного сайта (хотя мы не рекомендуем этого делать). Для этого у вас должен быть доступ к сайту developers.facebook.com, а также зарегистрированное приложение.
Прежде чем отключить предварительную загрузку для определенного URL, нужно сделать следующее:
Убедитесь, что в HTML-коде этого URL в разделе <header> содержится код <meta property= “fb:app_id” content= “<your_app_id>” />.
- Убедитесь, что связь между вашим документом HTML и ID вашего приложения зарегистрирована Facebook. Проверить это можно на странице developers.facebook.com/tools/debug. При необходимости можно запустить повторное сканирование. Подробнее о краулере Facebook.
После этого перейдите на developers.facebook.com и следуйте приведенным ниже инструкциям.
- Выберите Настройки, а затем — Расширенные.
- В меню Диспетчер доменов нажмите Добавить ссылку.
- Введите URL и снимите флажок «HTML» или «Javascript и CSS» в разделе Настройка предварительной загрузки. Если вы запретите предварительную загрузку HTML, мы также не будем предварительно загружать Javascript и CSS.
Примечание. В большинстве случаев эти изменения начинают действовать немедленно, но иногда может потребоваться несколько часов.
Основы клиентской оптимизации — базисные понятия
Номер 1
Размер веб-страницы определяется:
Ответ:
 (1) только размером основного HTML-файла 
 (2) только размером используемого в ней набора внешних ресурсов 
 (3) как размером основного HTML-файла, так и размером используемого набора внешних ресурсов 
Номер 2
Укажите, что является внешним объектом веб-страницы?
Ответ:
 (1) HTML-код 
 (2) изображение 
 (3) мультимедийный файл 
Номер 3
К каким объектам веб-страницы применимы методы оптимизации?
Ответ:
 (1) текстовые файлы на строне сервера 
 (2) изображения 
 (3) мультимедийный файлы 
Номер 4
Что меньше всего определяет скорость загрузки веб-страницы?
Ответ:
 (1) размер HTML-файл(ов) 
 (2) размер и количество CSS-файлов 
 (3) число изображений и их формат 
Упражнение 2:
Номер 1
Укажите, что из перечисленного ниже не является задачей клиентской оптимизации?
Ответ:
 (1) оптимизация размера файлов 
 (2) оптимизация взаимодействия с пользователем 
 (3) оптимизация визуального представления веб-страницы 
Номер 2
Укажите группу методов клиентской оптимизации, в рамках которой применяются технологии слияния текстовых файлов:
Ответ:
 (1) особенности кэширования 
 (2) объединение объектов 
 (3) уменьшение размеров объектов 
Номер 3
Что из перечисленного ниже не является объектом изучения клиентской оптимизации?
Ответ:
 (1) особенности кэширования 
 (2) объединение объектов 
 (3) оптимизация CSS-производительности 
 (4) оптимизация JavaScript 
 (5) оптимизация визуального представления 
Номер 4
Какие методы являются основными при оптимизиции скорости загрузки страницы?
Ответ:
 (1) верстка HTML-страниц согласно макету 
 (2) настройка gzip-сжатия 
 (3) настройка кэширования 
 (4) проверка выполения JavaScript во всех браузерах 
Упражнение 3:
Номер 1
На какой задаче (задачах) состредоточены механизмы оптимизации скорости загрузки веб-страницы?
Ответ:
 (1) ускорение предзагрузки веб-страницы 
 (2) ускорение основной загрузки веб-страницы 
 (3) ускорение пост-загрузки веб-страницы 
Номер 2
Загрузка каких данных идет в один поток при запросе веб-страницы (в браузере Internet Explorer 7 и ниже)?
Ответ:
 (1) первоначальный HTML-файл 
 (2) CSS-файлы 
 (3) Javacript-файлы 
Номер 3
Какой процесс (процессы) является наиболее проблемным с точки зрения производительности?
Ответ:
 (1) предзагрузка веб-страницы 
 (2) основная загрузки веб-страницы 
 (3) пост-загрузка веб-страницы 
Номер 4
Какую стадию загрузки обязательно проходит произвольная веб-страница?
Ответ:
 (1) предзагрузка веб-страницы 
 (2) интерактивна загрузка веб-страницы 
 (3) основная загрузки веб-страницы 
 (4) пост-загрузка веб-страницы 
Упражнение 4:
Номер 1
Какие процессы могут быть настроены после окончания основной загрузки страницы:
Ответ:
 (1) логика кэширования 
 (2) последовательная загрузка JavaScript-модулей 
 (3) пост-загрузка стилевых правил 
Номер 2
Какой заголовок браузера предназначен для управления состоянием клиентского кеша?
Ответ:
 (1) Cache-Control
 
 (2) User-Agent
 
 (3) Content-Length
 
 (4) ETag
 
Номер 3
Какие аттрибуты заголовка Cache-Control
предзназначены для управления состоянием клиентского кеша?
Ответ:
 (1) max-age
 
 (2) pre-check
 
 (3) post-check
 
Номер 4
Какие объекты должны быть обязательно закэшированы на веб-странице:
Ответ:
 (1) сам HTML-файл 
 (2) стилевые правила и JavaScript 
 (3) графические изображения 
Упражнение 5:
Номер 1
Каким образом можно форсировать обновление статического файла у пользователя через изменение URL ресурса:
Ответ:
 (1) только с помощью директивы RewriteRule 
 (2) только с помощью GET-параметра 
 (3) как с помощью директивы RewriteRule, так и с помощью GET-параметра 
Номер 2
Какой заголовок браузера ставит в соответствие каждому файлу уникальный идентификатор, изменяющийся при изменении файла?
Ответ:
 (1) ETag
 
 (2) User-Agent
 
 (3) Cache-Control
 
Номер 3
Какой статус-код посылается сервером в ответ на запрос браузера, если файл не изменился с момента последнего запроса:
Ответ:
 (1) 200 
 (2) 502 
 (3) 304 
 (4) 666 
Номер 4
Какой заголовок браузера ставит в соответствие каждому файлу уникальный идентификатор, изменяющийся при изменении файла:
Ответ:
 (1) User-Agent
 
 (2) Last-Modified
 
 (3) Cache-Control
 
Упражнение 6:
Номер 1
К каким ресурсам может быть применен механизм объединения для уменьшения числа соединений браузера с сервером?
Ответ:
 (1) только текстовые файлы 
 (2) только картинки 
 (3) как текстовые файлы, так и картинки 
Номер 2
Какой(-ие) метод(ы) оптимизации позволяет экономить ресурсы сервера, быстрее освобождая сокет?
Ответ:
 (1) только кэширование 
 (2) только объединение ресурсов 
 (3) как кэширование, так и объединение ресурсов 
Номер 3
Выберите верное утверждение:
Ответ:
 (1) принципом клиентской оптимизации является уменьшение количества передаваемых данных от сервера к клиенту 
 (2) ответ сервера в форме статус-кода 504 означает, что запрашиваемый файл не изменился с момента последнего запроса 
 (3) современные браузеры могут устанавливать несколько десятков одновременных соединений с сервером для получения статических файлов 
Номер 4
Выберите верное утверждение:
Ответ:
 (1) клиентская оптимизация должна производиться перед серверной 
 (2) серверная оптимизация позволяет во всех случаях добиться более значимых результатов 
 (3) клиентская и серверная оптимизации дополняют друг друга, и должны производиться параллельно 
Упражнение 7:
Номер 1
Какой механизм оптимизации позволяет сократить время на передачу файла браузеру:
Ответ:
 (1) кэширование 
 (2) объединение ресурсов 
 (3) gzip-сжатие 
Номер 2
Какой механизм оптимизации не применим для высоконагруженных серверов с динамическими HTML-файлами:
Ответ:
 (1) кэширование 
 (2) объединение ресурсов 
 (3) gzip-сжатие 
 (4) все применимы 
Номер 3
Какая степень gzip-сжатия должна быть применима для высоконагруженных серверов с динамическими HTML-файлами:
Ответ:
 (1) минимальная 
 (2) средняя для этого класса серверов 
 (3) максимальная 
Номер 4
Является ли техника gzip-сжатия ресурсоемкой для браузера?
Ответ:
 (1) только в случае маломощного процессора 
 (2) только в случае наличия большой вычислительной мощности 
 (3) ни в коем случае 
Упражнение 8:
Номер 1
Для каких файлов рекомендуется применять статическое архивирование для ускорения первой стадии загрузки страницы:
Ответ:
 (1) тестовые файлы 
 (2) CSS-файлы 
 (3) JavaScript-файлы 
Номер 2
Какие методы оптимизации могут применятся для ускорения первой стадии загрузки страницы:
Ответ:
 (1) gzip-сжатие текстовых файлов 
 (2) объединение файлов стилей 
 (3) статическое архивирование JavaScript-файлов 
Номер 3
Какие методы оптимизации могут быть применимы к CSS-файлам для ускорения первой стадии загрузки страницы:
Ответ:
 (1) объединение 
 (2) gzip-сжатие 
 (3) статическое архивирование 
Номер 4
Влияет ли сжатие CSS-файлов на скорость загруки страницы на первой стадии:
Ответ:
 (1) никак не влияет 
 (2) сильно влияет 
 (3) влияет только в случае большого количества CSS-файлов 
 (4) влияет только в случае единственного CSS-файла 
Упражнение 9:
Номер 1
Каким образом Internet Explorer 7 и ниже запрашивает все CSS-файлы, объявленные в head
страницы?
Ответ:
 (1) последовательно 
 (2) в 2 потока 
 (3) параллельно, открывая несколько сокетов 
 (4) зависит от способа взаимодействия сервера и клиента 
Номер 2
В каком случае каждый запрашиваемый CSS-файл, объявленный в head
страницы добавляет задержку при загрузке:
Ответ:
 (1) только если установлено соединение с сервером в режиме keep-alive
 
 (2) только если установлено соединение с сервером в режиме, отличном от keep-alive
 
 (3) в любом случае 
Номер 3
Какие методы оптимизации рекомендуется применять к файлам скриптов для ускорения начальной загрузки страницы:
Ответ:
 (1) объединение 
 (2) перенос в пост-загрузку 
 (3) статическое архивирование 
Номер 4
Какие файлы нужно объединять для ускорения начальной загрузки страницы:
Ответ:
 (1) CSS-файлы 
 (2) картинки 
 (3) медиа-файлы 
Упражнение 10:
Номер 1
Какой этап клиентской оптимизации веб-приложения включает создание процедур по обеспечению быстрой загрузки других страниц сайта (если посетитель решит туда перейти)?
Ответ:
 (1) этап оптимизации доставки информации и оформления 
 (2) кэширование файлов оформления 
 (3) этап оптимизации обработчиков событий, которые должны взаимодействовать с пользователем после основной загрузки страницы 
Номер 2
Какой из перечисленных этапов загрузки должен проходить параллельно с процессом доставки информации и оформления:
Ответ:
 (1) кэширование файлов оформления и параллельные запросы 
 (2) загрузка обработчиков событий, которые должны взаимодействовать с пользователем после основной загрузки страницы 
 (3) нет верного ответа 
Номер 3
Какие действия производятся на этапе кэширования файлов оформления при загрузке страницы?
Ответ:
 (1) настройка кэширующих заголовков 
 (2) настройка процедур для своевременного сброса кэша 
 (3) нет верного ответа 
Номер 4
О чем должен позаботиться разработчик для ускорения загрузки сайта для постоянных посетителей?
Ответ:
 (1) настроить кэширующие заголовки 
 (2) подключить параллельные потоки загрузки 
 (3) настроить сжатие для файлов оформления 
Упражнение 11:
Номер 1
Каким требованиям должна отвечать HTML-страница в начале этапа «оживления» - создания обработчиков событий, которые должны взаимодействовать с пользователем?
Ответ:
 (1) необходимость работы всех ссылок и форм без JavaScript 
 (2) наличие серверных интерфейсов для AJAX-запросов 
 (3) наличие необходимых шаблонов страниц 
Номер 2
В каком месте HTML-страницы должны быть подлючены JavaScript-файлы для того, чтобы не снижать скорость доставки контента и оформления?
Ответ:
 (1) перед закрытием тега head
 
 (2) перед закрытием тега body
 
 (3) перед открытием тега body
 
Номер 3
При небольшой сложности клиентского интерфейса рекомендуется использовать:
Ответ:
 (1) единственный JavaScript-файл 
 (2) множественные JavaScript-файлы 
 (3) множественные CSS-файлы 
Номер 4
JavaScript-файлы рекомендуется загружать:
Ответ:
 (1) на этапе предзагрузки страницы 
 (2) во время интерактивной загрузки 
 (3) на этапе полной загрузки 
 (4) на этапе пост-загрузки 
Упражнение 12:
Номер 1
Выберите верное утверждение:
Ответ:
 (1) пост-загрузка стилевых правил отражается на фактической скорости первоначальной загрузки незначительно 
 (2) главным принципом серверной оптимизации является уменьшение размера передаваемых данных 
 (3) часть серверной нагрузки может быть перенесена на клиентский браузер 
Номер 2
Выберите верное утверждение:
Ответ:
 (1) для всех статических файлов рекомендуется выставлять максимальное время жизни кэша 
 (2) в случае ответа сервером на запрос браузера статус-кодом 304 запрашиваемый файл не пересылается по причине его отсутствия 
 (3) архивирование файла позволяет сократить время на его передачу браузеру 
Номер 3
Укажите, на какой стадии загрузки страницы как правило осуществляется предварительное кэширование дополнительных ресурсов страницы:
Ответ:
 (1) предзагрузка 
 (2) интерактивная загрузка 
 (3) пост-загрузка 
Номер 4
Укажите, на какой стадии загрузки страницы браузер как правило запрашивает картинки с сервера:
Ответ:
 (1) предзагрузка 
 (2) интерактивная загрузка 
 (3) полная загрузка 
 (4) пост-загрузка 
HTML\CSS: Предзагрузка страниц: ускоряем загрузку браузером
Улучшить субъективную скорость работы сайта можно указав браузеру, какую страницу пользователь откроет следующей и браузер начнет ее загружать предварительно (предзугрузка).
Реализуется это очень просто, добавлением в head страницы:
<link rel="next prefetch prerender" href="NEXT_PAGE" />
Проверить работу в Chome можно с помощью: chrome://net-internals/#prerender
Как это работает?
Браузер встречает инструкцию prerender
или prefetch
, создает новую невидимую вкладку, и начинает загружать в ней контент (со всем содержимым в случае prerender). Если пользователь действительно переходит по предсказанному адресу, текущая вкладка заменяется на новую, и он оказывается на уже загруженной.
Понятно что далеко не всегда это применимо — не всегда понятно, какой будет следующая страница. Но для многостраничных статей, или записей в блоге это вполне рабочий вариант оптимизации.
Дополнительно:
prefetch
указывает браузеру что этот ресурс потребуется нам и браузер загрузит его с низким приоритетом и положит в кэш. Браузер может не загрузить ресурс по своему усмотрению, или загрузить только в режиме простоя;
prerender
заранее загружает ресурс или страницу и все ее содержимое в фоне (в фоновой вкладке). Браузер загрузит все ресурсы, построит DOM, применит CSS и JS. А когда пользователь перейдет по ссылке, скрытая страница станет заместо текущей и загрузится моментально;
subresource
позволяет подгрузить ресурсы (css, изображения) в пределах текущей страницы если предвидится их использование;
dns-prefetch
для ускорения DNS-запросов, если вы загружаете ресурсы с других сайтов;
preconnect
делает все то же, что и dns-prefetch, но при этом как бы создает предварительно соединение.
Оптимизация загрузки сайта
Подробнее об этапах
Предложенный сценарий имеет несколько обобщённую форму, поэтому в реальности он может быть ещё сложнее.
Начинается всё с того, что пользователь указывает буквенный адрес сайта, однако эти адреса существуют для удобства пользователей. В Сети же вся адресация иная: используются IP-адреса, указывающие, на каких серверах находится тот или иной сайт.
Для розыска этих сопоставлений используются системы DNS (Domain Name System), серверы которой работают как справочные, давая в ответ на запрос IP-адрес, точное местоположение ресурса.
Итак, первым шагом браузер отправляет запрос на DNS-сервер, получает в ответ IP-адрес, по которому и обращается к самому серверу сайта.
В нашем примере этот этап не имеет отдельной метрики в Pagespeed, но, так как запрос к DNS-серверу в любом случае требует времени, этап неизбежно влияет на все имеющиеся показатели.
Только теперь браузер может начать подключение. Если пользователь не указал протокол — браузер подключится по стандартному HTTP.
При подключении к серверу браузер как бы сообщает, что он пришёл по этому адресу за сайтом с таким-то доменным именем. На одном IP-адресе может существовать несколько сайтов, поэтому прямое подключение по IP-адресу будет сродни курьеру, пришедшему в большое офисное здание со словами, что он хочет видеть Ларису Ивановну: администратор здания его просто проигнорирует, максимум — проведёт до ближайшего кабинета управляющей компании, обслуживающей здание.
Да, возможна ситуация, когда на одном адресе находится только один сайт, однако это всё же частный случай — и даже в этом случае дальнейший ответ будет зависеть только от настроек сервера.
Итак, на втором шаге браузер уже общается с сервером, находящимся на этом IP-адресе, пытается подключиться к определённому сайту, сообщая все доступные и необходимые данные. В этот момент сервер проверяет запрос и… заставляет браузер переподключиться, чтобы подключиться по безопасному протоколу HTTPS: ведь сайт, конечно же, должен быть безопасным. После перенаправления браузер подключается заново, получая от сервера ключ его сертификата.
Повышение производительности в Интернете с помощью подсказок и предварительной загрузки браузера
Когда дело доходит до того, чтобы сделать Интернет удобнее для всех, вам нужно использовать все возможности для повышения производительности веб-сайта. В этой статье мы рассмотрим подсказки браузера, такие как предварительная выборка и предварительная визуализация, а также новую директиву предварительной загрузки, чтобы увидеть, как они могут потенциально повысить производительность. Мы также принимаем во внимание, что это означает для синтетического и реального мониторинга браузера.
Что такое подсказка браузера и как она помогает повысить производительность в Интернете?
подсказок браузера (также называемых подсказками ресурсов и спекулятивной выборкой ) не являются чем-то новым; Mozilla представила предварительную выборку в 2006 году в своем браузере Firefox. Подсказка браузера сообщает браузеру о возможных будущих переходах. Подсказки браузера позволяют браузеру использовать время простоя для извлечения или подготовки к извлечению ресурсов в ожидании следующего действия пользователя . Браузер решает, будет ли он обрабатывать подсказку, в зависимости от устройства пользователя, доступной полосы пропускания и других переменных среды.Подсказки браузера имеют очень низкий приоритет, и иногда браузер полностью игнорирует их.
Мы включили в эту статью наиболее часто используемые типы, но вы можете найти полный список возможных типов на W3Schools. Параметры подсказок браузера включают:
Предварительная выборка
Prefetch — это предложение браузера, означающее, что URL-адрес является наиболее вероятной целью следующей навигации. Браузер, если он решает действовать в соответствии с подсказкой, помещает ответ в кэш устройства и не будет выполнять какую-либо обработку ответа.Например, в процессе оформления заказа пользователь находится на странице, где просматривает содержимое своей корзины. На следующей странице собрана информация о доставке и предпочтениях. Вы можете повысить производительность страницы доставки, заставив браузер извлекать некоторые ресурсы, необходимые для страницы доставки, пока пользователь просматривает свою корзину. Как только посетитель переходит на страницу доставки, браузеру нужно только извлечь ранее извлеченные ресурсы из кеша браузера.
Пререндер
Prerender похож на предварительную выборку, за исключением того, что предварительная обработка извлекает всю страницу вместо назначенных ресурсов. Prerender предписывает браузеру обработать контент и сохранить его в памяти устройства. Используя предварительную визуализацию, вы хотите быть уверены, что посетитель перейдет на предварительно обработанную страницу; в противном случае вы перегружаете свой сервер и тратите впустую тарифный план и пропускную способность вашего посетителя.
Алекс Пейнтер в своей статье «Если вы используете предварительную визуализацию на своем веб-сайте», говорит: «Простое добавление rel =» prerender »к элементу в HTML также может быть не лучшим способом реализации этой техники.Вместо этого рассмотрите возможность использования JavaScript, чтобы отложить предварительную отрисовку до тех пор, пока исходная страница не завершит загрузку, или даже добавить обработчик событий к гиперссылке, чтобы предварительная отрисовка запускалась при наведении курсора на нее ».
Предварительная выборка DNS (предварительная выборка DNS)
Предварительная выборка DNS работает так же, как обычная предварительная выборка, но разрешает только DNS. Подсказка сообщает браузеру, что он должен разрешить DNS для будущей навигации пользователя. Сделав это необходимое возвращение в оба конца раньше, вы сэкономите драгоценное время, затрачиваемое на предварительную обработку.
Предварительное соединение
Это немного продвигает предварительную выборку DNS и сообщает браузеру, что нужно продолжить и разрешить DNS, произвести квитирование TCP и согласование TLS (если есть) для следующей навигации пользователя.
Следующая и предыдущая
Если страница является частью серии страниц, таких как фотогалерея, статья, которая занимает несколько страниц, или каталог продуктов с разбивкой на страницы, следующие и предыдущие подсказки сообщают браузеру о возможной будущей навигации пользователя.Кроме того, Google использует next и prev для улучшения индексации страниц в серии.
Предварительная загрузка или декларативная выборка
Подсказки браузера, как описано выше, сообщают браузеру, что для следующей страницы могут потребоваться этих ресурсов, но предварительная загрузка сообщает браузеру, что требует ресурсов для текущей страницы. Предварительная загрузка заставляет браузер как можно скорее получить ресурс вместо того, чтобы ждать, пока ресурс понадобится позже на странице. Например, ресурс может находиться не в HTML, а глубоко в файле CSS или сценария, и ожидание загрузки файла CSS или сценария и последующее извлечение ресурса тратят драгоценное время загрузки.Директива предварительной загрузки сообщает браузеру о ресурсе раньше, чтобы он мог получить ресурс как можно скорее. Предварительная загрузка особенно полезна при использовании веб-шрифтов.
Сообщенные преимущества использования предварительного натяга
Адди Османи, инженер Google, написал отличную статью о предварительной загрузке и сообщает о нескольких случаях использования, когда директива предварительной загрузки позволила значительно улучшить производительность.
- Housing.com продемонстрировал повышение производительности на 10%, когда они начали предварительную загрузку поздно обнаруженных скриптов.
- Shopify показал улучшение на 50% (1,2 секунды) до первого значимого рисования, когда они использовали предварительную загрузку для получения веб-шрифтов.
- Treebo сэкономили одну секунду, предварительно загрузив изображение заголовка и пакеты веб-пакетов.
Использование подсказок браузера и предварительной загрузки на вашем сайте
Вы объявляете подсказки браузера и директивы предварительной загрузки с помощью тега . Теги ссылок находятся на странице
. Атрибут отношения (rel) тега ссылки сообщает браузеру, какой тип подсказки он хотел бы использовать.
Браузер устанавливает приоритет ссылки на основе атрибута отношения. Prefetch, prerender, preconnect, next и prev — все они получают низкий приоритет, в то время как preload может получить высокий приоритет на основе атрибута «as» ссылки предварительной загрузки.Если нет атрибута «as», ресурс получает высокий приоритет, в то время как as = «script» может быть понижен до среднего или низкого приоритета. Есть много возможных типов директив:
-
as = «аудио»
-
as = «видео»
-
as = «font»
-
as = «сценарий»
-
as = «изображение»
Вы можете просмотреть полный список типов атрибутов «как» в Preload W3C Candidate Рекомендации.
Как упоминалось ранее, подсказки браузера (не предварительная загрузка) обычно получают очень низкий приоритет в браузере.Вы можете повысить вероятность того, что браузер распознает подсказку, установив атрибут «pr». Атрибут «pr» сообщает браузеру вероятность того, что ему понадобится ресурс, ранжируя его от 0 до 1. Например, тег ссылки ниже имеет 80% вероятность того, что он понадобится для следующей навигации.
Как подсказки и директивы браузера влияют на мой мониторинг?
Вы можете задаться вопросом, как предварительная загрузка и подсказки браузера влияют на результаты мониторинга. Эффект, если он есть, зависит от типа монитора. На такие типы мониторов, как SSL, DNS и внешние серверы, это никак не влияет, поскольку они не используют веб-браузер, но ваш мониторинг реального пользователя и некоторый синтетический мониторинг могут показывать некоторые различия. Когда монитор использует настоящую технологию браузера, вся страница загружается в собственный браузер (Chrome, IE, Firefox, Phantom JS) через контрольную точку, как это делают ваши реальные пользователи при доступе к вашему сайту, поэтому любые подсказки или директивы также будут обработаны. и может влиять на производительность некоторых типов мониторов.
Подсказки браузера
Поскольку подсказки браузера, такие как предварительная выборка и dns-prefetch, не выполняются до тех пор, пока не загрузится текущая страница, ваши проверки полной страницы и мониторинг доступности не покажут никаких различий в производительности (это потому, что мы запускаем каждую синтетическую проверку с чистым кешем). Мониторы транзакций, охватывающие несколько страниц, могут показывать улучшенную производительность после первоначального запроса навигации, если первая страница содержит подсказки браузера. Поскольку подсказки браузера являются только предложениями, вы можете увидеть изменения в производительности в зависимости от того, решил ли браузер следовать предложению.
Предварительный натяг
Подсказка браузера является необязательной для браузера, но директива предварительной загрузки — это не просто предложение для браузера, а требование, поэтому браузер должен следовать директиве для получения ресурса. Директива preload заставляет браузер извлекать ресурс асинхронно, пока он загружает остальную часть страницы, поэтому ваш реальный браузер мониторов, таких как Full Page Check и мониторы веб-приложений, надеюсь, увидит повышение производительности. Предварительно загруженный ресурс появится в начале каскадного отчета проверки полной страницы.В приведенном ниже примере водопада ресурс 3 — это файл сценария. Ресурсы 4 и 5 также являются файлами сценариев, но 4 и 5 используют директиву предварительной загрузки, а ресурс 3 — нет. Файлы сценариев блокируют рендеринг, что означает, что браузер ждет, пока ресурс завершит загрузку, прежде чем запрашивать следующий ресурс (обратите внимание, что ресурс 6 не запускается, пока ресурс 3 не завершится). Поскольку ресурсы 4 и 5 используют директиву предварительной загрузки, браузер может продолжить и загрузить их, пока он обрабатывает предыдущий ресурс, блокирующий рендеринг.Без директивы preload эти скрипты загружались бы позже, и они тоже стали бы элементами, блокирующими рендеринг.
А как насчет моего реального мониторинга пользователей?
Real User Monitoring (RUM) работает по сценарию, расположенному на каждой отслеживаемой странице. Если пользователи войдут на страницу напрямую, они не получат преимуществ от подсказок браузера, но увидят улучшения, основанные на директивах предварительной загрузки. Оказавшись на вашем сайте, и если на следующей странице также включен RUM и используются ресурсы, определенные на текущей странице пользователя, пользователь должен увидеть улучшения, и эти улучшения производительности повлияют на результаты вашего реального мониторинга пользователей. Поскольку Uptrends объединяет ваши данные об эффективности, в отчетах будут показаны результаты эффективности для каждого посетителя страницы, а не только для тех, кто пришел со страниц с подсказками браузера для страницы.
Примечание о пререндере
Когда вы выполняете предварительную выборку, ресурс извлекается и сохраняется в кеше браузера, но браузер не обрабатывает ресурс, пока он не понадобится браузеру. Для предварительной визуализации браузер загружает и полностью обрабатывает страницу, а затем сохраняет ее в кеше.Microsoft описывает этот процесс как открытие страницы в скрытой вкладке браузера со всеми загруженными ресурсами, созданной DOM, разложенной страницей, примененным CSS и выполненным JavaScript. Если пользователь переходит на предварительно обработанную страницу, отображается скрытая страница, и пользователю кажется, что она загружена мгновенно. Мгновенная загрузка отлично подходит для конечного пользователя, но если вы используете предварительную визуализацию на странице, которая использует аналитику, и пользователь никогда не переходит на предварительно созданную страницу, ваши аналитические отчеты все равно могут регистрировать просмотр страницы, потому что файл сценария был выполнен как часть предварительный процесс. Хотя предварительная визуализация имеет ограниченную поддержку браузера (см. Таблицу ниже), если ваши посетители используют браузер, который поддерживает предварительную визуализацию, и браузер выбирает выполнение предварительной визуализации, в ваших отчетах будет отображаться просмотр страницы.
Заключительные мысли
Подсказки браузера при ответственном использовании — мощный способ улучшить взаимодействие с пользователем на вашем сайте. Вам необходимо тщательно обдумать варианты, чтобы не злоупотреблять пропускной способностью и тарифным планом пользователя, а также не возлагать чрезмерную нагрузку на свои серверы.Сержио Гомес, разработчик в Google, написал отличную статью о подсказках для браузера, в которой есть множество дополнительных советов и предостережений, которые вы должны учесть, прежде чем использовать некоторые из этих оптимизаций в своем коде.
Вы увидите прирост производительности для предварительной загрузки в своих каскадных отчетах проверки полной страницы, а посетители вашего сайта увидят, какие улучшения могут вносить подсказки браузера, когда они переходят по вашему сайту. В конце концов, именно качество пути пользователя удерживает их на вашем сайте и заставляет возвращаться.Улучшите их путь с помощью директив предварительной загрузки и подсказок браузера и обеспечьте быстрое и успешное путешествие с помощью мониторинга со стороны Uptrends. С помощью Uptrends вы будете знать, когда у вашего веб-сайта, веб-службы или API возникнет проблема. Раннее предупреждение с помощью множества опций предупреждений Uptrends может помочь вам минимизировать простои, сохранить производительность и сделать ваших пользователей счастливыми.
html — Как я могу предварительно загрузить страницу с помощью HTML5?
Предварительная выборка включена в спецификацию W3C под названием Resource Hints.Он реализован в Firefox, Chrome, IE 11, Edge, Opera после версии 12.1 и в браузере Android версии 4.4.4, дополнительные и актуальные сведения см. На странице предварительной выборки caniuse.
Также см. Страницы caniuse и spec для связанных технологий (поддерживаемые браузеры впоследствии извлекаются из caniuse и обновляются по состоянию на сентябрь 2015 года):
- Предварительная отрисовка caniuse / spec (IE 11, Edge, Chrome, Opera)
- Предварительное подключение caniuse / spec (Firefox, Chrome 46, Opera 33)
- DNS Prefetching caniuse / spec (IE9 (, см.
Примечание ниже ), IE10, все остальные браузеры, кроме Opera Mini и, возможно, iOS Safari и Android Browser)
IE 9 реализовал только предварительную выборку DNS, но назвал ее «предварительной выборкой»
(осторожно!).Некоторое время Chrome (по крайней мере, до 2013 года) делал только предварительную отрисовку и предварительную выборку DNS. IE11 реализует ленивую загрузку
для изображений; Microsoft пыталась включить это в спецификацию, но пока этого не произошло. Утверждается, что iCab был первым браузером, реализовавшим предварительную выборку, хотя это поведение было автоматическим и не контролировалось разметкой.
Историческая справка
Пакет приложений Mozilla, а затем и Firefox, реализуют спецификацию (спецификация фактически основана на ранней реализации предварительной выборки Mozilla, которая в некоторой степени основывалась на заголовке Link:
, указанном в RFC 2068, который теперь был заменен RFC 2616 [который не ссылается на заголовок Link:
]. См. Эту старую версию документации (🕔) для более подробной информации.) Согласно документации по MDN ():
Предварительная выборка ссылок — это механизм браузера, который использует время простоя браузера для загрузки или предварительной выборки документов, которые пользователь может посетить в ближайшем будущем.
Браузер ищет заголовок HTML
или HTTP
Link:
с типом отношенияследующий
илис предварительной выборкой
.
Итак, синтаксис:
Вы также можете использовать Link:
HTTP-заголовок:
Ссылка: ; rel = предварительная выборка
Или
для имитации того же заголовка HTTP:
Обратите внимание, что отношение следующий
также может использоваться, но его основная функция — указывать «следующую» страницу в навигации, поэтому вы не должны использовать его для ресурсов или несвязанной информации. Предварительная выборка также выполняется для HTTPS-соединений.
iCab
iCab, похоже (🕔) реализовал раннюю предварительную выборку примерно в 2001 году. Очевидно, iCab предварительно загрузил все ссылки на страницы с контентом (не на ресурсы), не следуя никаким намекам, которые разработчик оставил бы в разметке.
Предварительная загрузка, предварительная выборка и приоритеты в Chrome | Адди Османи | reloading
Не полагайтесь на fetch (), работающий с «предварительной загрузкой»… пока что. В Chrome, если вы попытаетесь использовать предварительную загрузку с API fetch (), вы в конечном итоге вызовете двойную загрузку.В настоящее время этого не происходит с XHR, и у нас есть открытая ошибка, чтобы попытаться ее исправить.
Поставьте отметку «как» при предварительной загрузке, иначе вы свернете на нет все преимущества!
Если вы не укажете действительное «как» при указании того, что предварительно загружать, например, скрипты, вы получите дважды.
Предварительно загруженные шрифты без перекрестного происхождения будут получать двойную выборку! Убедитесь, что вы добавляете атрибут crossorigin при получении шрифтов с использованием предварительной загрузки, иначе они будут загружены дважды.Их запрашивают в анонимном режиме CORS. Этот совет применим, даже если шрифты имеют то же происхождение, что и страница. Это применимо и к другим анонимным выборкам (например, XHR по умолчанию).
Ресурсы с атрибутом целостности не могут повторно использовать предварительно загруженные ресурсы (пока), а также могут вызывать двойные выборки. Атрибут «целостность» для элементов ссылки еще не реализован, и существует нерешенная проблема со спецификацией. Это означает, что при наличии любых метаданных целостности предварительно загруженные ресурсы будут отброшены.В реальных условиях это также может привести к дублированию запросов, когда вам придется искать компромисс между безопасностью и производительностью.
Наконец, хотя это не вызовет двойных выборок, в целом это хороший совет:
Не пытайтесь предварительно загрузить абсолютно все! Вместо этого выберите определенные поздно обнаруженные ресурсы, которые вы хотите загрузить раньше, и используйте предварительную загрузку, чтобы сообщить о них браузеру.
Это хороший пример инструментов , а не правил. Насколько велика предварительная загрузка, может влиять на то, сколько сетевых конфликтов у вас будет с другими ресурсами, также загружаемыми на вашу страницу, доступную пропускную способность вашего пользователя и другие сетевые условия.
Предварительно загрузите ресурсы, которые, вероятно, будут обнаружены на вашей странице поздно, но в остальном их важно получить как можно раньше. В сценариях предварительная загрузка ключевых пакетов хороша тем, что отделяет выборку от выполнения таким образом, что простое использование, скажем,