Как стать автором
Обновить

Комментарии 44

Интересно, спасибо :) relationship вообще хорошая вещь, даже без подгрузки (пользуюсь поддерживаемыми Оперой «prev», «next» и т.д., а теперь будет ещё над чем поэкспериментировать.

>Я предвижу замечания, что это влияет на статистику и даже, может быть, нарушает privacy (не в случае сайта surfingbird.ru, конечно, а в общем — представьте, что злые люди сказали вашему браузеру загрузить страницу с детским порно и ваш ip попал в логи), увеличивает трафик, и ещё что-нибудь.

Да, privacy нарушается и очень сильно, но, имхо, это должна быть проблема разработчиков самих браузеров, а не тех, кто использует функционал rel'ов

Если так судить, то iframe тогда вообще дыра, да и js не лучше.
Ура, пожалуйста :)

Кстати, насчет privacy — и в FF, и в Chrome предзагрузку можно отключить — about:config, network.prefetch-next в FF, «Предсказывать сетевые действия для ускорения загрузки страниц» в Chrome.
Чтобы не учитывать в статистике prerender (и выключить в нём AJAX и видео, так как иначе prerender не будет работать) можно использовать Visibility.js. С помощью Page Visibility API можно узнать, что страница ещё только пререндериться.
Что насчёт актуальности контента?
Контент на Хабре обновляется каждые минут 5-15, а на чтение одной страницы может уйти около 5 минут.

Сейчас, переходя на следующую страницу, я могу увидеть пару постов с прошлой.
И именно так я понимаю, что появилось что-то новое.

В случае с prefetch, возможны казусы в акутальности страниц.
Я думаю, автор имел ввиду многостраничный статический контент, вроде постов в блоге, например на thg.
Да, верно. Я привёл пример вероятных недостатков этой методики на очень динамичном контенте.
НЛО прилетело и опубликовало эту надпись здесь
Good to know.
Chromium согласно ссылке в конце статьи сохраняет загруженную страницу только 30 секунд — что потом, не знаю. Либо загружает заново, что маловероятно, либо просто пререндеринга при открытии не случится.

Это, кстати, очень интересно было бы выяснить, но, опять же, только сорцы.

Вообще для случая, скажем, длинных статей получается какая-то ерунда — пока я её читаю, у меня всё выпадет из пререндеринга. Надо поэкспериментировать…
Спасибо, я вот не знал про такой функционал, был приятно удивлён! Будем ждать полноценную поддержку
В свое время rel=«next», rel=«prev» (кажется файрфокс в какой-то из версий стал подгружать страницы внезапно по ним, потом в следующих кажется перестал) некисло вынесли мозг в попытках выяснить
а) Какого черта на сервер идет 3 запроса, а не 1
б) Почему вдруг поперла статистика хитов вдруг стала расти
в) Почему некоторые пользователи только зайдя на сайт сразу жмут другие страницы
г) Зачем сначала возросла нагрузка, а потом многие стали жаловаться на бан.
И т.д.
p.s.: разгадка конечно оказалась простой, да и вообще такие вещи знать бы следовало конечно, но запомнилось надолго…
Про prerender, аналогичный подход я использовал при разработке интерфейса терминалов Qiwi.

Большая часть пользователей жмёт «Оплата услуг» и я хотел оптимизировать этот момент.
После нажатия на эту кнопку, просто сдвигается iframe с предзагруженой страницей групп провайдеров.
Выходит моментально и чувствуется «быстрый старт».
Круто.

У меня, кстати, для серфинга тоже была идея использовать два ифрейма — один показывается, второй грузит следующую страницу, потом они меняются местами.
Но так, как в этой статье, оказалось намного проще сделать. Зато с ифреймами работало бы везде… и глючило тоже везде)
На терминалах движок Trident и, на фоне ярой борьбы с утечками, мечтать о Nu'school не приходилось :-)
:) А вот, кстати, почему железки тяготеют к ванильному IE? Ведь что угодно можно поставить.
Эти причины мне не понятны.
Подозреваю, что жёсткая экономия жёсткого диска.
Отстой.
Бизнес, да.
Убедиться в том, что ОНО работает, в Chrome можно тут — chrome://net-internals/#prerender

Сколько же всякого… лишнего грузит браузер просто так.
Во-вторых, поддерживают такие финты ушами на данный момент AFAIK только Firefox и Chrome

А мне казалось, что это было в Опере с чёрте помнит какой версии. Или, может, это делалось иначе, но панель навигации с кнопками перехода на следующую и предыдущую страницу она имела.
Хотя, конечно, вряд ли она их умела заранее рендерить.
Функция «Fast Forward» (в русском переводе — Быстрый переход) появилась в 2002 году в Opera 7. Есть она и сейчас, только кнопка убрана из интерфейса (есть в настройках — можно вернуть самостоятельно). Принцип работы простой: браузер самостоятельно пытается определить, на какую следующую страницу пользователь перейдёт, и при активации данной функции (нажатии на кнопку в интерфейсе или на пробел на клавиатуре) открывает эту страницу. Удобно при чтении многостраничных документов, просмотре фотогалерей в Full Screen и т.д. Также параллельно использовался и способ с rel=«next», rel=«prev», позволяющий организовать последовательное открытие страниц веб-сайта с документацией, к примеру. Сейчас работу этой функции можно проверить в любой версии Opera (после 7, естественно), в справке Opera (но не по 12 версии, а максимум по 11.60 help.opera.com/Windows/11.60/en/ ).

Пре-рендеринга мы не делали по очень понятной причине: трафик. Opera всегда славилась как экономичный браузер, а в те годы (2002) о безлимитке только мечтали, платили зачастую помегабайтно и сидели на dial-up. Естественно, предзагрузка (тем более — ненужных страниц) пробивала бы огромную брешь в бюджете на интернет или тормозила бы всю работу в сети.
Судя по Вашему описанию, нет ни пререндеринга, ни префетчинга.

Я так и думал, но все же не нашел в документации однозначного доказательства, что страницы не подгружаются. Спасибо за прояснение!
НЛО прилетело и опубликовало эту надпись здесь
Ого :) Ну, сложно сказать, как часто — но это часть привычного лексикона.
Жаль, но применимо к «статичным» страницам, для которых не передаются POST-ом данные.
Например в пошаговом мастере, в котором от выбора параметров текущего шага зависит следующий, этот подход не применим.
Ну да, у вас просто не получится в мета-теге указать нужный метод.

Да и если даже целевая страница сама запустит POST-запрос, Chrome просто отменит пререндеринг, например.

И это совершенно правильно, IMHO.
Не уловил
Как собственно «помечать» те ссылки на страницы, которые мы хотим грузить юзеру фоном?
Надо в head-секцию добавить два мета-тега:

<link rel="prefetch" href="NEXT PAGE URI" />
<link rel="prerender" href="NEXT PAGE URI" />


Если вам по какой-то причине нужно именно помечать ссылки, то тогда придется написать JS, который будет искать такие ссылки и добавлять те же мета-теги для каждой помеченной.
Решил поделиться тем что получилось у меня.

Карта кликов пагинатора (яндекс-метрика):



Код скорее всего не оптимальный, но он работает, писал по-быстрому (Drupal):

	<?php 
		if(arg(0)== 'place' && !arg(1)){
			if(isset($_GET['page'])){
				$next = $_GET['page']+1;
				?>
					<link rel="prefetch" href="http://bestmaps.ru/place?page=<?php echo $next; ?>" />
					<link rel="prerender" href="http://bestmaps.ru/place?page=<?php echo $next; ?>" />
				<?php
			} else {
				?>
					<link rel="prefetch" href="http://bestmaps.ru/place?page=1" />
					<link rel="prerender" href="http://bestmaps.ru/place?page=1" />
				<?php
			}
		}
	?>
	


Отмечу, что данная фича по дефолту не работает в хромиуме который стоит у жены (правда давно не обновлялся), и не работает в Irone Chrome, опять-же по дефолту. В хроме конечно эффект фантастический, как раз тот случай, когда можно скзать «WOW-эффект». Автору спасибо за топик, подсыпаю в карму. К слову, Firefox у меня работает не намного медленнее (13 версия)
Вот это научный подход :)

Iron Chrome вроде заточен на, мм, безопасность/privacy пользователя, так что там сильно прикручена самостоятельность исходного браузера. Вероятно, пререндеринг по умолчанию отключен.
Кстати, в хроме замечена еще такая деталь. Если прогуливаясь по пагинатору остановиться например на пятой странице, и например отойти на 5 минут, или переключить на другую вкладку и забыть, то по возвращении при переходе на следующую страницу (шестую) она будет грузиться долго, как обычно. Видимо это говорит о том, что хром выгружает незадействованные пререндеренные страницы через несколько минут
Ну да, что-то такое описывалось для хромиума.

Я вот думаю, по уму, браузеру надо бы после истечения этого некоего таймаута слать на закешированную страницу If-Modified-Since или ETag, ну, если заголовкие соответствующие у страницы есть.
Может быть, он даже так и делает…

А сбрасывать кеш только если я ушел со страницы, которая выдала подсказку.
Сорри, а куда писать данный код?
я писал в html.tpl.php
в раздел HEAD
НЛО прилетело и опубликовало эту надпись здесь
Выявил такую странность, что если на страницу с prerender зайти по ссылке с target=_blank, пререндер не будет работать, пишется window.opener, как исправить не знаю.
видимо target=_blank это новая вкладка, а пререндер думает что юзер будет открывать в текущей вкладке
Нет, это логичней было бы если вкладка которая открывается в target=_blank не использовала prerender.
Но я имею ввиду что мы откудато через target=_blank переходим на страницу, на этой странице указание на prerender, а с нее переходим на указанную на предыдущей странице ссылку, и в таком случае не работает. Както так. :)
Интересная технология.

У меня возникло пару вопросов уважаемым комментаторам:
1) Будет ли срабатывать Google Analytics при таком пререндере?
2) Есть ли легкий способ понять, что у пользователя медленный интернет/мобильный интернет и не включать для него эту функцию?
3) В интернет-магазине какие могут быть точно угадываемые последовательности? Пейджинг в каталоге, что ещё?
1) Вроде гугл в своей аналитике использует Page Visibility API, а заголовок FF учитывать ещё проще, так что я бы поставил на то, что всё ок.
2) Тут следует полагаться на интеллект браузера, что он сам не включит пререндер в таком случае, думаю.
3. Я думаю, что пейджинг на странице категорий и возврат в категорию из товара, по хлебным крошкам, к примеру
Зарегистрируйтесь на Хабре , чтобы оставить комментарий