Prefetch 1

Preload, prefetch и другие теги

Prefetch 1

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

Делаем всё заранее, а потом мгновенно отображаем результат! Звучит круто. Ещё круче, что это очень просто реализовано. Пять тегов дают браузеру команду на предварительные действия: Вкратце расскажем, что они делают и когда их использовать.

Перейти к: preload · prefetch · preconnect · dns-prefetch · prerender

preload

говорит браузеру как можно скорее загрузить и кэшировать ресурс (например, скрипт или таблицу стилей).

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

Скрипты не выполняются, таблицы стилей не применяются. Ресурс просто кэшируется и немедленно предоставляется по запросу.

Синтаксис

href указывает на ресурс, который вы хотите скачать.

as может быть чем угодно, что можно скачать в браузере:

  • style для таблиц стилей,
  • script для скриптов,
  • font для шрифтов,
  • fetch для ресурсов, загруженных с помощью fetch() или XMLHttpRequest,
  • полный список см. на MDN.

Важно указать атрибут as – это помогает браузеру правильно расставлять приоритеты и планировать загрузку.

Когда использовать

Используйте предзагрузку, когда ресурс понадобится в самое ближайшее время. Например:

  • Нестандартные шрифты из внешнего файла: /* index.css */@font-face { src: url('comic-sans.woff2') format('woff2');} По умолчанию comic-sans.woff2 начнёт загружаться только после загрузки и разбора index.css. Чтобы не ждать так долго, можно загрузить шрифт раньше с помощью :
  • Если вы разделяете свои стили согласно подходу Critical CSS на две части, критическую (для немедленного рендеринга) и некритическую: При таком подходе некритические стили начнут загружаться только при запуске JavaScript, что может произойти через несколько секунд после рендеринга. Вместо ожидания JS используйте , чтобы начать загрузку раньше:

Не злоупотребляйте предзагрузкой. Если загружать всё подряд, сайт не ускорится волшебным образом, скорее наоборот, это помешает браузеру грамотно планировать работу.

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

Если он понадобится позже, например, для следующей страницы, то используйте .

Подробности

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

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

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

В данном случае браузер определяет приоритет по атрибуту as. Для браузера Chrome можете посмотреть полную таблицу приоритетов.

prefetch

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

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

Ресурс просто кэшируется и немедленно предоставляется по запросу.

preconnect

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

Например, если загружает шрифты Google Fonts, React из CDN или запрашивает ответ JSON с сервера API. Установка нового соединения обычно занимает несколько сотен миллисекунд. Она производится один раз, но всё равно отнимает время.

Если вы заранее установили соединение, то сэкономите время и быстрее загрузите ресурсы с этого домена.

dns-prefetch

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

Например, загружать шрифты Google Fonts, React из CDN или запрашивать ответ JSON с сервера API. Для каждого нового домена разрешение записи DNS обычно занимает около 20−120 мс. Это влияет только на загрузку первого ресурса с данного домена, но всё равно представляет задержку.

Если осуществить разрешение DNS заранее, то мы сэкономим время и загрузим ресурс быстрее.

prerender

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

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

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

Резюме

Используйте:

  •  — когда вам понадобится ресурс через несколько секунд
  •  — когда понадобится ресурс на следующей странице
  •  — когда вы знаете, что вам скоро понадобится ресурс, но вы ещё не знаете его полный URL
  •  — аналогично, когда вы знаете, что вам скоро понадобится ресурс, но вы ещё не знаете его полный URL (для старых браузеров)
  •  — когда вы уверены, что пользователи перейдут на определённую страницу, и хотите ускорить её отображение
  • prefetch
  • preload
  • preconnect
  • dns-prefetch
  • prerender

Хабы:

  • Разработка веб-сайтов
  • Серверная оптимизация
  • IT-стандарты
  • Браузеры

Источник: https://habr.com/ru/post/445264/

Windows XP /prefetch:1 – миф об ускорении загрузки программ

Prefetch 1

Александр Альпидовский2011-10-10 в 05:14

В Windows XP ключ /prefetch:1 по умолчанию добавляется к адресу файла в свойствах иконки запуска Windows Media Player. Что такое prefetch? У слова prefetch перевод на русский язык звучит как “предварительная выборка”.

Если лень читать – смотрите видео. Продолжительность: 7:46 мин.

Смыслом этой функции является ускорение загрузки программ и компьютера с Windows XP в целом. Она создает файлы в папке prefetch, содержащие информацию о путях к этим программам на жестком диске.

На сайтах в топе Яндекса по запросу “windows prefetch” можно найти некоторую дезинформацию об этой функции в Windows XP.

В частности, на сайтах netler и izcity авторы поддерживают мифы о том, что для ускорения загрузки программ нужно добавлять в адресные строки их ярлыков ключ /prefetch: 1 , и что для ускорения загрузки системы нужно периодически удалять все файлы формата pf из папки prefetch.

В Windows XP папка Prefetch расположена обычно по адресу C:\windows\prefetch. В ней находятся файлы Prefetch с расширением *.pf – это списки файлов для загрузки, так называемые, хэш файлы. Их имена генерируются при хэшировании EXE файлов после загрузки.

Каждый раз, когда Вы запускаете EXE файлы, происходит их хэширование и проверка, есть ли соответствующие им .pf файлы в папке Prefetch, и если да, то загружаются эти файлы. Если соответствующие файлы prefetch не существуют, система отслеживает, какие файлы задействует при запуске EXE программа, создает этот .

pf файл и сохраняет в него пути к этим файлам.

  • Так что, во-первых, это не очень хорошая идея – очищать папку prefetch, как предлагают некоторые компьютерные сайты. Система просто создаст все эти файлы заново, в любом случае, если, конечно Вы не догадаетесь, как отключить prefetch.

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

Следующий момент…

Некоторые “специалисты” стали добавлять ключ /prefetch:1 при запуске программ. Многие заметили, что в автоматически созданных ярлыках для Win Media Player присутствует этот ключ, и его значение варьируется в зависимости от выполняемых программой функций.

Например, ярлыку файла WMV, по которому Вы дважды щелкаете для просмотра видео, присваивается один параметр ключа prefetch, ярлыку автозапуска для воспроизведения или копирования музыки, которые появляются, когда Вы вставляете аудио компакт-диск – другие параметры.

Некоторые специалисты предположили, что ключ /prefetch: 1 включает процесс предварительной выборки. И они сразу стали добавлять его к каждому исполняемому файлу и рекомендовать делать это другим на разных сайтах и форумах.

И таким образом сформировался этот миф. Другие специалисты написали на своих сайтах, что это полное фуфло, и выдвинули теорию о том, что этот ключ специфичен только для WM Player, увидев ссылки на файлы prefetch в подсистеме драйверов Windows.

Вобщем, ни те ни другие нифига не угадали.

Операционная система смотрит на параметр /prefetch:#, когда создает процесс и делает она это только с одной единственной целью. Она добавляет порядковый номер к хэшу. Зачем?

WMP имеет много разных функций. Библиотеки и код, которые он задействует при воспроизведении WMV, сильно отличаются от библиотек, участвующих в воспроизведении DVD, копировании компакт-диска, прослушивании Shoutcast-потока или любой из функций Windows Media Player.

Если бы для WMP был только один хэш, то предварительная выборка корректно работала бы только для одной из его функций. При считывании неверных данных из файла prefetch не было бы фатальной ошибки – файл .pf просто загрузился бы в память и не был использован.

Тем не менее, это было бы контрпродуктивно.

Параметр /prefetch:# с разными числами для каждой функции Windows Media Player позволяет для каждой функции создать свой отдельный хэш файл, и таким образом предварительная выборка выполняется правильно. Такие параметры prefetch характерны не только для WMP. То же самое делается для любого другого приложения.

Параметр /prefetch: принимается во внимание, когда создается первый поток в процессе, но не удаляется функцией CreateProcess из командной строки, поэтому любое приложение, которое не вкуривает неизвестные параметры командной строки, не будет работать с ним. Вот почему так много людей, заметили, что, например, Kazaa и многие другие программы выдавали ошибки или просто отказывались запускаться c windows prefetch. А WMPlayer конечно знает, что ключ может быть указан в параметрах, и просто молча игнорирует его существование.

Все что делает ключ /prefetch:# – изменяет хэш номер. Операционная система загружает программу с ним точно так же, как и без него, просто сохраняя данные о предварительной выборке в другой .pf файл.

Предыдущие записи:

“,”author”:”Александр Альпидовский”,”date_published”:null,”lead_image_url”:”https://lh6.googleusercontent.com/proxy/jh9qKeGiCU4R9fzpSGeAi9dXyvR2Qv6PZoHrpvwoeO1vf3ltlL3PYxnqP6VIAuK0hdLITfnWudA3i8OE7RtV96CRe_Y=w1200-h630-n-k-no-nu”,”dek”:null,”next_page_url”:null,”url”:”http://www.neispravnosti-kompyutera.ru/2011/10/windows-xp-prefetch-1.html”,”domain”:”www.neispravnosti-kompyutera.ru”,”excerpt”:”Что такое prefetch? У слова prefetch перевод на русский язык звучит как “предварительная выборка”…”,”word_count”:697,”direction”:”ltr”,”total_pages”:1,”rendered_pages”:1}

Источник: http://www.Neispravnosti-Kompyutera.ru/2011/10/windows-xp-prefetch-1.html

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.