Pull to refresh

Comments 16

Возможно, автор сей статьи сможет заодно пояснить, почему при нажатии кнопки «Назад» в Safari, если предыдущая страница была главной, часто перекидает на незалогиненную страницу :)? Разработчики Хабра добавили костыль, который перезагружает страницу, когда это происходит, но всё равно механизм этого бага очень интересен.
У меня стабильно при нажатии кнопки «Назад» в Safari кидает на незалогиненную главную страницу :). И такое происходит только на Хабре.
В Using Firefox 1.5 caching написано — если страница использует unload, то кэширование не работает, вы немного уточняете это утверждение. Но все же не понятно в какой момент и как браузер определяет наличие обработчика unload, если как описано в документации, то как только вы что-то повесили на unload, то мы можем говорить, что мы уже используем unload даже если потом мы отцепили обработчик. Мне приходит в голову единственный момент, в который браузер проверяет наличие обработчика это после его исполнения unload, тогда почему нельзя его использовать, статья начиналась с фразы
Разработчик может посчитать, что данное поведение ни что иное как баг браузера или какая-то его особенность, и в поисках быстрого решения бездумно вставить лишний обработчик на событие unload (первый пункт в списке, приведенном дальше). Тем самым разработчик отказывается от BFCache вообще, тем самым лишая своих пользователей возможности практически мгновенного перемещения по посещенным страницам.
Грубо говоря браузер после того как уйти со страницы выполнив все обработчики в том числе и unload, уже в своем окружении проверяет, а висит ли хоть один обработчик на unload, если его unload undefined, то тогда кэшировать, если остальные конечно условия в вашем списке тоже выполняются. Так ли это?
насколько я понимаю, именно по наличию unload хендлеров браузер и определяет, включать ли bfcache для данного ресурса или нет.
Вопрос — как можно принудительно отключить в Мозилле кэширование страниц, с которых ушел, а то уж больно безбожно жрёт память.

P.S. Как, как может 5 страничек с обычными ненагруженными страничками пожирать 624 Мб памяти?
Биткоины майнят. Mozilla ведь некоммерческая организация :-D
Когда вы уходите со страницы — она «консервируется», т.е. выполнение её скриптов останавливается.
Эх… вспоминаю теплое ламповое кэширование страниц в Opera < 9.20 (с версией могу ошибиться). Которое было включено всегда. И пусть скрипты ломались при этом, но на диалапе такое кэширование было то что надо.
Opera… Сколько в слове этом. Вспомнилось как лет 5 назад мне нужно было получить расписание экзаменов. Мы привыкли что оно всё время доступно в сети и никуда не переписывали. Осталась пара дней до экзамена, а во сколько он и в какой аудитории никто не знает. Ну а сайт лежит мёртвым сном. Я вспомнил что посещал эту страницу ранее, около 2-3-ёх недель назад. Включил offline-режим, набрал нужный URL и страница «всплыла передо мной». Со всеми стилями и пр… Такой кеш надолго запомнился. А сейчас такое поведение, наверное, уже почти не встретишь. Повсюду груды JavaScript-а и прочих сложностей, сводящих подобный кеш на нет.
Меня один раз так Firefox спас когда я вкладки перепутал и вместо главного шаблона сайта в админке вставил шаблон от компонента (сайт был на Битрикс и без какого-либо доступа кроме админки). Увидев как вместо сайта пустую страницу я сообразил что что-то не то и чуть было уже не отложил кирпичей. Но вовремя вспомнил про «Автономный режим». Пару кликов «Назад» и вот уже передо мной форма с оригинальным кодом шаблона. Отключил кэширование и ткнул по сабмиту в форме… Пронесло =)
Когда пользователь возвращается на закешированную страницу, скрипты не выполняются заново

Важно уточнить, что не выполняются только внешние скрипты, подключенные через script src="". Inline-скрипты выполняются всегда. Не берусь утверждать, но по-моему так будет более кроссбраузерно.
Скрипты уже выполнились. Если их выполнить повторно, то это может только привести к ошибкам, а пользы никакой не даст.
Польза будет та же что и от pageshow/pagehide. Ошибки выявляются на этапе тестирования.
Тем не менее факт остается фактом: inline-скрипты выполняются при переходе вперед/назад.
Не подтверждаю. Кликаю назад в firefox — inline скрипт не выполняется. Chromium выполняет оба. Т.е. перегружает страницу.
Sign up to leave a comment.

Articles