В ближайших версиях Firefox и Chromium могут произойти важные изменения.

Во-первых, в Firefox 66 для десктопов по умолчанию заблокируется автоматическое воспроизведение видео и звука на всех страницах. Блог Mozilla Hacks заранее предупреждает об этом разработчиков. Воспроизведение видео и звука разрешается только через HTMLMediaElement API и только после взаимодействия пользователя со страницей (щелчок мыши, нажатие кнопки или прикосновение к тачскрину).

В Chromium могут произойти ещё более интересные изменения.

При этом разрешено автоматическое воспроизведение видео с заглушённым звуком. Для такого контента нужно для HTMLMediaElement установить атрибут “muted” в значение true. На скриншоте показано, что пользователи могут вручную отключить блокировку звука для отдельных сайтов.

В Firefox для Android новая реализация заменит существующий механизм блокировки автоматического воспроизведения.

Технически Firefox блокирует вызов play() от HTMLMediaElement.play(), возвращая ошибку NotAllowedError. Так же поступают все браузеры с аналогичной функциональностью. Соответственно, веб-разработчикам не следует предполагать, что вызов play() всегда будет успешен. Чтобы избежать блокировки, рекомендуется два варианта. Первый: запускать воспроизведение контента в связке с обработчиком событий, например, KeyboardEvent на десктопе или touchend под Android. Второй: запустить автовоспроизведение без звука (оно разрешено по умолчанию) и показать пользователю кнопку для включения звука.

Финальная версия Firefox 66 запланирована к выходу на 19 марта 2019 года, так что у разработчиков есть время на подготовку.

Mozilla сейчас работает над автоматической блокировкой контента Web Audio: её обещают до конца 2019 года.

Бюджет для веб-страниц


Изменения в Chromium пока на стадии обсуждения. Не факт, что соответствующий коммит включат в основную ветку. Но идея очень интересная.

4 февраля 2019 года один из разработчиков Алекс Расселл представил коммит 1265506 («Never-Slow Mode»). Он предлагает внедрить в браузер дополнительный режим --enable-features=NeverSlowMode, который будет ограничивать бюджет каждой веб-страницы, тем самым гарантируя быструю загрузку.

Алекс Расселл — один из ведущих разработчиком Chrome, Blink и веб-платформы в Google, автор статьи «Вы можете себе это позволить? Бюджет веб-производительности в реальном мире», перевод которой публиковался на Хабре.


Иллюстрация из статьи Алекса Расселла

Предлагаемый бюджет:

  • Объём одной картинки: 1 МБ
  • Объём всех картинок: 2 МБ
  • Одна таблица стилей CSS: 100 КБ
  • Все таблицы стилей CSS: 200 КБ
  • Максимальный размер скрипта: 50 КБ

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

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

Ожирение сайтов


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

По какой-то причине запросы приложений растут быстрее, чем производительность железа. В результате с каждым годом софт становится медленнее, а веб-сайты жиреют.
Тенденция такова, что софт вовсе не становится быстрее и функциональнее. Мы получаем более быстрое оборудование, на котором софт с теми же функциями ворочается медленнее, чем раньше. Всё работает намного медленнее максимальной скорости. Никогда не задумывались, почему ваш телефон загружается от 30 до 60 секунд? Почему он не может загрузиться, скажем, за одну секунду? Здесь нет никаких физических ограничений. Лично мне бы такое понравилось. Хочется, чтобы разработчики достигли предела, используя каждый бит для производительности. — Из статьи «Моё разочарование в софте»
Возможно, бюджет веб-страниц поможет решить проблему, если другие разработчики Chromium согласятся на коммит Расселла.



Комментарии (36)


  1. QtRoS
    06.02.2019 10:53
    +1

    Забавно наблюдать, какие жёсткие ограничения хотят поставить для сайтов, держа в уме тот же пресловутый GMail.


    1. musicriffstudio
      06.02.2019 11:19

      для своих сайтов гугл сделает исключение. Также было с автостартом аудио.

      Пользователям нужно ровно одно — кнопка в заголовке таба, чтоб отключить ВСЁ аудио и видео на странице. Так сделано в десктопном Сафари для мака.
      Производителям браузера нужно как-то ограничить рекламу, раз уж она так напрягает пользователей, но полностью блокировать ролики которые лезут с любой страницы они не хотят т.к. это большая статья дохода.


      1. Zenitchik
        06.02.2019 16:03
        +1

        На самом деле не только рекламу. На Ю-тубе порядком бесит что при открытии вкладки видео сразу запускается. С какой стати оно должно запускаться раньше, чем я оказываюсь готов его смотреть? Я, может, хочу десяток вкладок открыть, посмотреть что написано, а потом решить в каком порядке запускать видео на них.


        1. Oplkill
          06.02.2019 22:48

          Есть плагины которые автоматически ставят на паузу в ново-открытом видео в ютюбе


        1. morozko
          07.02.2019 11:32
          +1

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


        1. IRainman
          09.02.2019 14:08

          У меня в Лисе стоит Enhancer for YouTube™ — никакого автовоспроизведения, никаких аннотаций, ничего лишнего. А ещё стоит h264ify ибо больше половины устройств аппаратного ускорения новых кодеков не поддерживают.

          и для nuclight тоже, пригодится ;)


    1. Stanislavvv
      07.02.2019 11:08

      Их гмыл в режиме «базовый HTML» отлично грузится за секунду :-)
      Надеюсь, в хромиуме таки появится.


  1. DickCancer
    06.02.2019 11:37

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


    1. mayorovp
      06.02.2019 21:26

      А где вы увидели словосочетание "бюджетная страница"? Я видел только "бюджет страницы"...


  1. sena
    06.02.2019 12:14

    Пользователям нужно ровно одно — кнопка в заголовке таба, чтоб отключить ВСЁ аудио и видео на странице. Так сделано в десктопном Сафари для мака.

    Как пользователь выскажусь
    1. Никакого автовоспроизведения видео и аудио, только по клику или спец. разрешение для конкретного таба/сайта
    2. Никакого исполнения скриптов в неактивых табах, только после специального разрешения для конкретного таба/сайта.


    1. musicriffstudio
      06.02.2019 13:08

      Никогда не говори «никогда».

      Есть куча нужного софта требующего автостарт.

      Заходишь по ссылке на ютуб — оно должно сразу запустить ролик.

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

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


      1. sena
        06.02.2019 14:16

        Есть куча нужного софта требующего автостарт.
        Заходишь по ссылке на ютуб — оно должно сразу запустить ролик.
        Открываешь сайт радио — звук должен сразу начаться с последней прослушанной станции.

        Так я же написал — надо разрешение для таких сайтов/табов. При первом заходе на ютуб у тебя всплывает окошко — «разрешить автостарт мультимедиа для этого сайта?» и варианты «да/нет» и чекбокс «запомнить выбор». Всё!
        И неплохо бы оставить трансляции в неактивном табе пока что-то делаешь в других вкладках.

        Точно так же — спец разрешение.

        Производители браузера не хотят давать право выбора

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


        1. Zenitchik
          07.02.2019 15:43

          При первом заходе на ютуб у тебя всплывает окошко

          Не надо окошко. Лучше чекбокс на панельке.


      1. nuclight
        06.02.2019 15:07
        +2

        Заходишь по ссылке на ютуб — оно должно сразу запустить ролик.


        Вот схера ли? Я открываю ссылку, и пускай она себе там в табе прогружается, а я продолжаю в мессенджере писать, например. Потому что может быть я сразу несколько линков на ютуб открыл. Мне вовсе не упало всё бросать и искать ту вкладку, которая требует от меня подчиниться и смотреть её.


        1. musicriffstudio
          06.02.2019 15:11
          -1

          програмасты из гугла с мозилой примерно так же рассуждали. Решили за всех остальных.


        1. RifleR
          06.02.2019 16:12

          Если вкладку ютуба открыть в фоне, то пока на нее не переключишься, видео воспроизводиться не начнет.


          1. Zenitchik
            06.02.2019 16:14

            Однако, пока я слушаю одно видео, я хочу посмотреть комменты к другим…


            1. musicriffstudio
              06.02.2019 21:36

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

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


          1. DrGluck07
            07.02.2019 10:26

            Если при выходе из ФФ активным был таб с ютубом, то после загрузки ФФ видео внезапно начинает играть, хоть я этого вообще не просил. А ещё, если открыть табы с видео, и попереключаться на каждый из них, то они ВСЕ продолжают играть. Большое спасибо, но этого совсем не хотелось.


    1. Zenitchik
      06.02.2019 16:07

      только после специального разрешения для конкретного таба/сайта.

      Для конкретного таба — через интерфейс в самом табе, и с возможность настроить умолчания в зависимости от домена.


    1. roman901
      07.02.2019 15:12
      +1

      Если я прихожу на какой-нибудь twitch/goodgame/другую стриминговую платформу, я хочу чтоб у меня сразу запускался плеер, а не я тыкал на него.


      1. sena
        07.02.2019 15:27
        -1

        Если я прихожу на какой-нибудь twitch/goodgame/другую стриминговую платформу, я хочу чтоб у меня сразу запускался плеер, а не я тыкал на него.

        В моём предложении это учтено. Вот объяснение


  1. ZoomLS
    06.02.2019 17:40

    Забавно, что одни разработчики Гугла выкатывают новый «жирный» Gmail, а другие разработчики делают «бюджетный режим» для их же браузера, который будет бороться с такими тяжёлыми сайтами, как новый Gmail.


    1. djv57
      06.02.2019 22:44

      Так у Гугла есть еще и «тощий» Gmail, давно уже.


      1. ainoneko
        07.02.2019 09:16
        +1

        Пока есть, да.
        А когда-то был и «тощий YouTube», есть ли он сейчас?


  1. WanSpi
    06.02.2019 17:53

    > Максимальный размер скрипта: 50 КБ
    Я так понимаю, сайты на которых стоит «JQuery» можно сразу хоронить?


    1. Valery4
      06.02.2019 18:53

      Можно любые сайты с картинками сразу хоронить. А многие из них — двигатель прогресса!


    1. Acionyx
      07.02.2019 04:35

      Зачем же. Нужно взять какой-нибудь вебпак и автоматически разбивать бандл на чанки по 49.9кб. На клиенте конкатенируем свои 30 чанков, делаем eval и вуаля. К тому же, может вебпак и без ручных операций справится.


      1. DemianFrai
        07.02.2019 14:59
        +2

        хм. jquery, vue, vuetify. И все это грузится чанками по 50КБ, проверяется, собирается, запускается… Это точно должно уменьшить время загрузки?


    1. 0x1000000
      07.02.2019 10:33

      Может имелся в виду размер сжатых данных?


  1. khanid
    07.02.2019 11:00

    Годные изменения. А то совсем уже веб унесло куда-то не туда — заходишь на страницу, а видеореклама со звуком начинает работать быстрее, чем отобразится текстовый материал, ради которого, собственно и заходишь.
    Да и насчёт жирного веба тоже надо что-то делать, и принудительный порядок данного действа, похоже, единственное, что может хоть как-то заставить шевелиться веб-разработчиков — недавно ругался с некоторыми. Они никакой проблемы в главной странице на 50 Мб не видели.


  1. Fragster
    07.02.2019 11:06

    Только что посмотрел время загрузки gmail — до того момента, как по девтулзам закончилась загрузка, прошло почти 40 секунд. На i7 и выделенной линии (не мобильном интернете в смысле).

    картинка
    image см. фиолетовую линию. ну и объем данных немного поражает:
    image


  1. namikiri
    07.02.2019 11:37
    +1

    Интересно, как на фичу с бюджетом сайтов отреагирует, например, Facebook? Или его запишут в какой-нибудь скрытый «белый список» и он продолжит насиловать компьютеры бедных юзеров?

    Ну вот как-то примерно так


  1. maybe24
    07.02.2019 14:59
    +1

    Лучше бы потребление ресурсов хромом ограничили на страницу, а не со скоростью загрузки носились. Вот например сейчас у меня на win 8.1 открыто 15 вкладок, всего хром жрет 1.5 Гб ОЗУ, в диспетчере задач 25 процессов chrome.exe, один из них кушает 700 МБ… Без доп проверок даже не понятно какая вкладка грузит систему. JS может ничего не весить, просто получит аяксом здоровенный массив и переворачивая циклом без таймаута повесит юзеру систему.


    1. mayorovp
      08.02.2019 12:47

      А через Shift+Esc разве не видно какая именно вкладка виновата?


      1. maybe24
        08.02.2019 15:24

        Про это сочетание клавиш знает не так много людей, и задачу оно не решает, т.к. показывает что больше всего памяти жрут субфреймы, вынесенные на верхний уровень из вкладок, и какая вкладка его загрузила уже не очень понятно. Но отслеживание это уже такое… я привел пример в том смысле, что они предлагают резать допустимые килобайты для загрузки, но не обращают внимание что одна страница может съесть ОЗУ и ЦП юзера, независимо от размера загруженных скриптов.