- Веб-приложения становятся все сложнее благодаря развивающимся технологиям и фреймворкам, позволяющим создавать динамический контент.
- Современные веб-сайты имеют массивные кодовые базы, сравнимые с операционными системами, со сложными бэкэндами управления медиа.
- Браузеры часто обменивают производительность на стабильность, скорость и безопасность за счет изоляции процессов, что приводит к дополнительным затратам памяти.
Веб-браузеры уже давно имеют репутацию чрезмерных потребителей оперативной памяти. Любой быстрый поиск найдет сотни мемов и сообщений на форумах о высокой загрузке оперативной памяти браузерами даже при отображении статических веб-сайтов.
С развитием Интернета развивались и наши браузеры - из статичных окон для просмотра текстового онлайнового мира они превратились в мощные динамические контентные станции, которые обеспечивают взаимодействие с такими насыщенными веб-приложениями, как видеозвонки. Но, несмотря на это, даже самые лучшие веб-браузеры сохраняют репутацию «пожирателей» оперативной памяти. Почему же браузерам требуется так много оперативной памяти и стоит ли беспокоиться?
Веб-приложения сегодня намного сложнее
Технологии, лежащие в основе Интернета, значительно изменились.
Веб-приложения стали чрезвычайно сложными по целому ряду причин. Веб-технологии долгое время сдерживались из-за отсутствия единой поддержки стандартов Javascript в браузерах, при этом каждый браузер часто отстаивал свое видение того, как должен работать веб.
Транспиляторы - инструменты, компилирующие код на одном языке в исходный код на другом языке, - помогли решить эту проблему, позволив разработчикам писать код на языке более высокого уровня или на более новом стандарте и преобразовывать его в то, что понимают старые браузеры. Два самых популярных транспилятора - Basil и Typescript, оба из которых создают обратно совместимый Javascript.
Транспиляторы позволяют разработчикам писать код на языке более высокого уровня или для более нового стандарта и преобразовывать его в то, что понимают старые браузеры.
Эта стандартизация пришла вместе с развитием крупных фреймворков для создания сложных интерфейсов, таких как Vue, Angular.js и React. Это также упростило создание отзывчивых дизайнов для экранов разных размеров. В этих фреймворках также появились функции, которые помогли создавать очень динамичные веб-страницы, не перегружая браузер.
Современные веб-сайты имеют огромные кодовые базы
Все это позволило нам создавать все более сложные приложения для Интернета. Некоторые содержитат до 50 миллионов строк кода, что, вероятно, значительно больше, чем браузер, на котором они работают, и более чем в 100 раз больше, чем основной бортовой компьютер космического шаттла.
Разумеется, весь этот код не работает одновременно, но он служит иллюстрацией того, что современные веб-сайты почти сравнимы с операционными системами - с управлением медиа, файловыми браузерами, потоками видео и изображений, сложными асинхронными бэкендами и многим другим. Все это стало возможным благодаря некоторым из вышеперечисленных технологий.
Веб-браузеры жертвуют производительностью ради стабильности, скорости и безопасности.
Разделяя отдельные вкладки, браузеры увеличивают накладные расходы.
В современных браузерах постоянно приходится искать компромисс между скоростью и производительностью. Независимо от того, замечаете вы это или нет, ваш браузер постоянно осуществляет предварительную загрузку и кэширование контента, основываясь на прогнозах ресурсов, которые могут понадобиться ему в будущем. Хотя это может повлиять на общее количество доступных системных ресурсов, это также может значительно ускорить работу браузера.
Современные браузеры также идут на компромисс в отношении памяти и изоляции процессов. Мы рассмотрим именно Chromium, поскольку он является самым популярным браузерным движком. Модель процессов Chromium можно долго читать, но теперь Chromium создает новый процесс для каждого «экземпляра веб-сайта», который, по сути, представляет собой конкретный веб-сайт и связанные с ним ресурсы. Это помогает ограничить влияние любых зависающих процессов, но в качестве компромисса используется большее количество памяти для каждого процесса.
Это также позволяет изолировать сайты, что ограничивает возможность доступа сайтов к данным друг друга в браузере и защищает от целого ряда угроз безопасности. В прошлом Chromium использовал модели «процесс на сайт», «процесс на вкладку» и однопоточную модель, но со временем перешел к созданию «песочницы» для сайтов, что привело к увеличению объема памяти. Изначально браузеры были однопоточными, и одна застрявшая веб-страница или сбой могли привести к остановке всего браузера.
Если вам интересно проверить, как Chrome использует оперативную память, у него есть собственный диспетчер задач, который покажет, какие экземпляры сайтов используются. Его можно найти в меню «Дополнительные инструменты».
В Интернете полно богатого контента
СМИ, реклама и контент управляют Интернетом
Тут всё просто. По мере того как Интернет становится все более динамичным и быстрым, а контент все более насыщенным, веб-страницы также становятся все более тяжелыми. Все больше и больше веб-страниц содержат изображения высокого разрешения, видео, графику и рекламу. Как мы уже отмечали ранее, динамический контент, анимация и эффекты стали гораздо проще в создании, а значит, и более распространенными.
Кроме того, в браузере почти незаметно работает значительное количество контента - все, начиная с аналитики пользовательского интерфейса и скриптов отслеживания, заканчивая крючками для социальных сетей и т. д. Все это - контент, который должен быть загружен и обработан вашим браузером. Это особенно актуально для таких социальных медиаплатформ, где любая веб-страница наполнена богатым контентом.
Высокое использование оперативной памяти — это неплохо.
Пустая оперативная память — бесполезная оперативная память
Пользователи, говорящие о большом количестве оперативной памяти браузера на своем компьютере, часто путают - это не всегда плохо. Ваш веб-браузер, вероятно, является одним из наиболее часто используемых и наиболее важных приложений на вашем компьютере, и он стал неотъемлемой частью современных вычислений. Оперативная память предназначена для высокоскоростного временного хранения данных, непосредственно связанного с процессором, на один уровень отделенного от встроенного кэша процессора.
Хотя нам необходимо поддерживать объем свободной памяти для выполнения других задач, пустая оперативная память ничего не делает для повышения производительности вашего ПК. Браузеры используют эту производительность и емкость для предварительной выборки, кэширования и оптимизации содержимого, чтобы улучшить качество просмотра веб-страниц, и это очень разумно. Со временем, по мере развития Интернета и повышения мощности компьютеров, браузеры по праву требуют все большей производительности.
Не беспокойтесь об оперативной памяти: Веб-серфинг стал лучше, чем когда-либо
Легко увидеть, как ваш браузер использует оперативную память, и предположить, что он делает что-то не так, но отдайте должное приложению. Сейчас ваш веб-серфинг лучше, чем когда-либо: Браузеры стали быстрее, стабильнее и безопаснее, чем когда-либо. Ваш браузер - почти наверняка одно из самых важных и используемых приложений на вашем рабочем столе, и его способность отображать все, что угодно - от кошачьих GIF-изображений или онлайн-игр до насыщенного видео высокой четкости, - это достижение, которому можно только удивляться. Если вы боретесь с высоким потреблением памяти на своем компьютере и причиной тому является браузер, возможно, пришло время подумать о модернизации машины или закрытии других фоновых задач.