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

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

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

В первых строках статьи рассказывается (*) о базовом свойстве любого пристойного браузера.
Вопросы:
0) хорошие бразуеры умеют это делать даже после отключения инета. Или они плохие?
1) что мешает такому ожидаемому поведению?
2) у Яндекса есть брендированный браузер — он так умеет? Я перестал читать статью после возникновения вопросов выше, а также по причине, указанной в конце этого моего коммента — см. (**) ниже.
3) про что еще я забыл спросить? (с)

Заранее благодарю за восполнение этих очевидных(!(?)) пробелов.
Ведь пробелы случаются у всех — как у читателей, так и у писателей...
была придумана технология BFCache, о которой важно помнить при разработке интерфейсов
чем BFCache отличается от (*)?
Причем тут интерфейс?
«Интерфейс» браузера или страницы поисковой выдачи?

Как много вопросов… это только я такой тупой? (**)
Или тот же вопрос помягше: если с самых первых строк статьи возникают вопросы, на которые эти строки ответа даже не обещают — многие ли станут читать такие статьи сегодня, когда эмодзи заполонили все?
Или сэкономить на «введении»(тм) — это надежда прорваться к тем, кто читать лонгриды неспособен? Но и тогда статья вышла слишком длинной... Или задачи продать слона и не стояло?
0. То, что вы видели, это, скорее всего, PWA или Service Worker.
1. Это не совсем то, о чем идет речь в статье. Если реализовывать такое через Service Worker'ы, то будет очень больно.
2. «Брендированный браузер Яндекса» — обычный Chromium с кастомным интерфейсом и фишками.
3. На что я ещё забыл ответить?

P.S. На статью не гоните, она отличная.
Задрал дергающийся рендер
Задрал рендер, дергающийся и тормозной из-за медленной подкачки местных скриптов с серверов Хабра.
На что я ещё забыл ответить?
0) Или они плохие?
1) Нипанятна ваще — для ламера вроде меня, но...
На статью не гоните, она отличная.
Тогда на кого она рассчитана? На крутейших слушателей исходного доклада? Тогда для Хабра надо бы адаптировать… или «нинннннада!»?
2) Он так умеет?
3) Мой коммент драматически короче статьи, которую Вы хвалите, но даже из моего коммента остались вопросы, которые Вы пропустили — их список см. выше. «Это заставляет задуматься...» (с)
0. Они не для этого предназначены. Service Worker'ы используют для кеширования статического контента, на этом и построена технология PWA. В случае использования PWA вы не сможете закешировать страницу как показано в статье (а там страница открывается моментально). Да, вы можете закешировать запросы к API, но рендер всей страницы остаётся.
1. См. пункт 0.
2. В статье написано, что данная фича находится в разработке = нет.
3. BFCache кеширует то, чего вы не сможете закешировать с использованием Service Worker'ов, например какие-то просчитанные внутренние данные DOM.
4. Не понял вопроса про интерфейс, как и цитаты из статьи, в интерфейсе браузера есть кнопочки «Вперёд» и «Назад», при использовании BFCache они работают как будто вы переключаете вкладку, без — как простой переход на адрес.

P. S. Я не обязан отвечать на все ваши вопросы.
Я не обязан отвечать на все ваши вопросы.
+1, но тогда ст0ило ли стараться, если все равно ответа для ламера сформулировать не удалось?
пп. 0 + 1 = нипанятна ни черта
На статью не гоните, она отличная.
Тогда на кого она рассчитана? Нет ответа… (с)
JFYI habr.com/ru/news/t/496698/#comment_21488004
Тут народ про IDА PRO и ее неоднозначного автора с его неоднозначной борьбой с пиратами не знаком — и возмущается, и комментов там больше, чем здесь, хотя тема явно менее популярная.
Выводы об успешности статей в корпо-блоге, не имеющих комментов, можно сделать очень неоднозначные
хорошие бразуеры умеют это делать даже после отключения инета. Или они плохие?

Браузеры этого не умеют, это определенные сайты умеют кешировать себя. То есть, сайт открывается снова, загружаясь из диска. Это можно сравнить с выключением и включением компьютера.
BFCache кеширует прям всю страницу (скорее всего, в памяти) и моментально возобновляет её. Это можно сравнить с гибернацией.

Тогда на кого она рассчитана? Нет ответа… (с)
JFYI habr.com/ru/news/t/496698/#comment_21488004
Тут народ про IDА PRO и ее неоднозначного автора с его неоднозначной борьбой с пиратами не знаком — и возмущается, и комментов там больше, чем здесь, хотя тема явно менее популярная.
Выводы об успешности статей в корпо-блоге, не имеющих комментов, можно сделать очень неоднозначные…

А может у людей просто не осталось вопросов?
Спасибо, что не бросаете меня в неведении.
хорошие бразуеры умеют это делать даже после отключения инета. Или они плохие?
Браузеры этого не умеют, это определенные сайты умеют кешировать себя.
Тогда как понимать термин offline browser ваще и соотв. фичу у некоторых хороших oNline браузеров в их меню, в частности?
А может у людей просто не осталось вопросов?
А может: Хабр - не место для дискуссий! (с) Денискин
который ограничивает авторов на комменты даже в их собственных статьях, например: позволяя recovery mode, но отрезая авторов от возможности (очевидно оперативного, а не раз в час или даже в сутки) обсуждения их статьи. Потому что Денискину нужны только статьи — но ничего сверх того, и это никак не скрывается даже в местном ФАКе.
Как тонко, а?
И таких примеров много: см. местные кармасрачи, если интересны душераздирающие подробности.

Это к тому, что узнавать у Вас дальше про комменты к местным статьям мне не интересно — я все понял,
а вот про браузеры Вы явно знаете больше моего: мой вопрос выше.
Тогда как понимать термин offline browser ваще и соотв. фичу у некоторых хороших oNline браузеров в их меню, в частности?

Использовал множество разных браузеров: Chrome, Firefox, Safari. Такой фичи не замечал. Возможно, даже если она существует, то это просто полное кеширование сайтов. А это не очень хорошо работает со всякими новомодными штуками типа Vue, React и т.п.

А может: Хабр — не место для дискуссий! (с) Денискин

Возможно, Хабр не для вас? Философию хабра создает и поддерживает сообщество, то есть большинство. Если вы не входите в большинство, то извините, вам не будет тут хорошо. И так не только на хабре, так везде. Жизнь уж такая. Советую написать об этом всем статью и изложить свои мысли там.
Использовал множество разных браузеров: Chrome…
Такой фичи не замечал
Первая строчка в гугле:
How to Enable Offline Browsing in Chrome
www.howtogeek.com › how-to-enable-offlin…
12 июл. 2017 г. — To enable the built-in offline mode in Chrome, type chrome://flags/#show-saved-copy in the address bar and press “Enter”. This will take you ...
Поэтому мне интересно:
Возможно, Хабр не для вас?
Вам тут все еще уютно?
> Первая строчка в гугле:

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

> Вам тут все еще уютно?

Да

Автор вам ничего не должен. Если вы не можете соблюдать элементарную вежливость, то не длите ответов.

Навигацию по истории можно считать базовым свойством. Очень быстро показать страницу, с которой ушёл пользователь (именно ту самую страницу, а не её похожую копию) — это далеко не базовое свойство любого пристойного браузера. Страницу надо где-то сохранить, странице надо не давать шпионить в это время за состоянием оборудования, все API надо поставить на паузу и потом более-менее корректно восстановить.


0) Хорошие браузеры умеют только быстро выполнять JS и предоставлять ему нужные API. После отключения инета отображением страницы занимается Service Worker (если он есть), подсовывая на запросы браузера нужные ресурсы. И всё равно в этом случае браузер строит страницу заново, запрашивает HTML-документ, парсит его, запрашивает встреченные в документе ресурсы, выполняет JS. Это требует времени и сильно отличается от "показать ту же самую страницу, которая уже была загружена". А если разработчик страницы не прикрутил к ней Service Worker, то после отключения инета браузер её открыть не сможет.


1) Ожидаемому поведению "браузер открывает все страницы очень быстро" мешает много что (например, тормознутость самих страниц, или большой RTT в мобильных сетях). Раньше о таком никто вообще не задумывался — страницы наподобие https://www.motherfuckingwebsite.com/ и так грузились быстро. Но шли годы, количество JS, CSS и картинок на странице росло, всё больше разработчиков вступало в клуб "мой бандл больше одного мегабайта", и мы оказались там, где оказались — на бюджетных устройствах большинство современных страниц открывается медленно, даже несмотря на все оптимизации в браузерах и новые технологии типа 4G, 5G, HTTP2 (очень часто для фронтендеров новая технология — это лишь повод впихнуть на страницу что-то ещё).


2) Да, свой брендированный браузер есть, и некоторые реализованные в нём фичи даже потом оказываются в коде Chromium, но готового bfcache в Yandex Browser нет. Код bfcache пишут разработчики из Google.


3) Спрашивайте, постараюсь ответить.


при разработке интерфейсов

Я имел в виду интерфейс страницы, фронтенд. Это яндексовая терминология (есть "разработчики бэкэнда" и есть "разработчики интерфейсов").


сэкономить на «введении»

Это субъективная оценка. Извините, я не смог сделать введение таким, чтобы все были удовлетворены. Кому-то мало, кто-то, наоборот, после доклада говорил: "зачем такое длинное введение, и так всё понятно".

Спасибо за появление здесь!
Очень быстро показать страницу, с которой ушёл пользователь (именно ту самую страницу, а не её похожую копию) — это далеко не базовое свойство любого пристойного браузера.
Какие традиции мешают иметь фичу: тупо показать как было (сохранено в локальном кэше), после чего опционально реагировать на ручной F5 ?
Страницу надо где-то сохранить
А для чего же тогда ваще существует локальный кэш браузера?
подсовывая на запросы браузера нужные ресурсы

если разработчик страницы не прикрутил к ней Service Worker, то после отключения инета браузер её открыть не сможет.
Очень часто вижу заглушки вместо картинок с неоригинального сервера. Также нередко бывают жалобы от тех, у кого страница (не на Хабре) никак недозагружается — а поэтому и не показывается ваще, никак, даже «частично». Такое успешно забарывают укорочением таймаута на такие запросы — и снова показывают заглушки вместо этих сокровищ со стороны.
Чем это хуже «ваще ничего не покажу, а буду ждать бесконечно!» (с) тупые браузеры.
кто-то, наоборот, после доклада
моя претензия была только на тему: доклад для неизвестной мне аудитории и статья на нынешнем Хабре (см. про нынешнюю аудиторию на примере IDA PRO) — это очень разные продукты должны быть, имхо.
зачем такое длинное введение
«должны» хотя бы потому, что доклад вживую не имеет удобной «перемотки», а статья легко навигируется по разделам, первым из которых м.б. это самое «введение». А может и не быть — зависит от целей публикации…

Спасибо за остальные ответы.
Спрашивайте, постараюсь ответить.
Других столь же тупых и\или ламерских вопросов у меня еще вагон есть и\или появятся, но сразу вываливать их все не я буду — уч0ный Денискиным уже, как можно заметить тут же, гы…
* я не буду
Какие традиции мешают иметь фичу: тупо показать как было (сохранено в локальном кэше)

Здесь противоречие уже в самом вопросе. "Тупо показать как было" не равняется "сохранено в локальном кэше".


Нигде, кроме bfcache, не сохраняется "как было видно на экране с учётом выполненных на данный момент скриптов и действий пользователя на UI (отметки чекбоксов, разворачивания деревьев и т.п.)".


В существующих кэшах сохраняются ресурсы (файлы, если хотите), в том виде, в котором они были получены с сервера, и чтобы из них "показать как было", надо заново всё распарсить, выполнить, отрендерить. И всё равно после этого будет видна страница в первоначальном виде, а не в том, в котором её оставил пользователь. Чтобы "показать как было", нужны специальные действия самой страницы (она должна сохранять своё состояние, и после перезагрузки читать и восстанавливать его).

«Тупо показать как было» не равняется «сохранено в локальном кэше».
я подразумевал, что все браузеры позволяют сохранить страницу локально, и даже с разной полнотой\в разных форматах.
Почему не модно делать это автоматически для каждой посещенной страницы и показывать такое в ответ на кнопку «назад»?
И (ес-сно (опционально)) для этого хранилища ограничивать его общий размер, дату протухания каждой страницы, и многое другое.
надо заново всё распарсить, выполнить, отрендерить.
1) есть разница, откуда брать исходники: из локального кэша или из рваного, тонкого и нестабильного (мобильного) инета;
2) «а еще можно» сохранять сразу в графическом виде — «для предельной скорости», чтобы парсер даже не участвовал. А чтобы расположенные внутри ссылки заработали — пущай юзер F5 жмет снова: это его выбор, а приятно всем. А кому неприятно — тому фича «отключить это». А для особо тупых — отключить это из коробки, но в настройках можно и включить.
И всё равно после этого будет видна страница в первоначальном виде, а не в том, в котором её оставил пользователь.
пусть «страница в первоначальном виде» — зато доп. выбор для юзера. Выбор — разве это плохо для конкурентного преимущества?
Чтобы «показать как было», нужны специальные действия самой страницы (она должна сохранять своё состояние, и после перезагрузки читать и восстанавливать его).
я ламер: если «снимки системы» для бекапа имеют общепризнанный смысл, то почему не имеет смысла такой же «снимок» для страницы? Для «простоты» — прямо картинкой и сохранять, чтобы не тратиться на парсер вообще.

И еще раз особо подчеркиваю: я ламер, и вопросы мои сознательно звучат так.
я подразумевал, что все браузеры позволяют сохранить страницу локально, и даже с разной полнотой\в разных форматах. Почему не модно делать это автоматически для каждой посещенной страницы и показывать такое в ответ на кнопку «назад»?

Это и есть bfcache. Как я уже говорил и писал, это очень нетривиальная в реализации вещь, но когда страницы становятся всё более тормознутыми, соотношение "профит от ускорения/сложность реализации" меняется, и теперь bfcache — это модно и выгодно.


есть разница, откуда брать исходники: из локального кэша или из рваного, тонкого и нестабильного (мобильного) инета

Ещё раз повторю, что даже при 100% попадании в кэш ресурсов исходники всё равно надо распарсить и выполнить, чтобы они превратились в DOM+CSSOM+запущенный JS, и на современных страницах или SPA с большим количеством JS это всё равно занимает значительное время.


«а еще можно» сохранять сразу в графическом виде — «для предельной скорости», чтобы парсер даже не участвовал

Напомнило старую шутку — сделать скриншот рабочего стола, положить его фоновой картинкой, а все настоящие иконки удалить. Попробуйте такое сделать самостоятельно и почувствуйте разницу: на картинке не будет hover, фокуса, выделения текста, тултипов, меню, клавиатурной навигации, скринридеров, вообще никакой интерактивности. Такое никто из разработчиков браузеров не выпустит в продакшен — засмеют.


пусть «страница в первоначальном виде» — зато доп. выбор для юзера

«Страница в первоначальном виде» при возврате назад уже работает прямо сейчас, здесь никакого дополнительного выбора для юзера нет, но это не устраивает и разработчиков и пользователей из-за скорости.


если «снимки системы» для бекапа имеют общепризнанный смысл, то почему не имеет смысла такой же «снимок» для страницы?

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

все браузеры позволяют сохранить страницу локально
Это и есть bfcache.
тогда я совсем запутался: до объявления bfcache это имело другое название? Кроме названия — в чем еще разница?
… сделать скриншот рабочего стола, положить его фоновой картинкой, а все настоящие иконки удалить. Такое никто из разработчиков браузеров не выпустит в продакшен — засмеют.
у первого айфона была позорная убогость с СМС и много чего еще смешного. И над «почесыванием» смеялись очень многие — а теперь юзеров с нормальной не виртуальной клавой ваще ни во что не ставят. И мобильный инет все еще недостаточно хорош, чтобы отказываться от скриншота рабочего стола с возможностью его Ф5ячки только тогда, когда нужно будет не только посмотреть на него… но я совсем не Джобс — это тоже бесспорно.
все браузеры позволяют сохранить страницу локально

А, понял, о чём это. Сохранить страницу локально на диске в виде набора HTML, CSS и JS — это совсем не то. После этого не каждая страница сможет открыться в том же виде. И опять же, при открытии браузер проходит всё тот же путь заново — парсит файлы HTML, CSS, JS, собирает DOM, CSSOM, выполняет JS,… дальше см. доклад и мои предыдущие комментарии.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий