Quantcast
Channel: Иван Бегтин »идеи
Viewing all articles
Browse latest Browse all 10

Как системно ускорить браузеры? Часть 1

0
0

Чем больше я наблюдаю за новыми и имеющимися браузерами тем больше понимаю что им остро нехватает системных решений в части их ускорения.

В принципе, нужны другие подходы, а не просто прокачка движков рендеринга и тому подобное.

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

Итак:

1. Кеширование типовых библиотек Javascript внутри браузера

Предположим что есть набор типовых библиотек которыми активно пользуются веб-мастера. Библиотек много, но есть наиболее популярные — jQuery, SWFObject, Prototype и так далее. Их не бесконечное количество, а вот используют их очень даже активно при этом браузеры их качают и качают, интерпретируют и интерпретируют, в общем делают много бессмысленной работы.

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

Примеры таких библиотек:

— Яндекс — http://api.yandex.ru/jslibs/

— Google — https://developers.google.com/speed/libraries/

— Microsoft- http://www.asp.net/ajaxlibrary/cdn.ashx

 

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

 

Все что для этого требуется — это реорганизация загрузчика скриптов и специальные версии, например, браузеров на базе Chromium. Так чтобы при наличии ссылки на типовые библиотеки, вместо этого, он отдавал бы JS библиотеку из предварительно подобранных и уже находящихся в памяти.

Причем сделать так чтобы разработчики библиотек могли бы предлагать свои библиотеки для такого стандартного пакета.

 

Вот и получаем ускорение на том что:

a) Библиотеки более не скачиваются из сети.

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

 

Понятно что не все будет идеально, но ведь направление то понятное.

2. Проактивное кэширование всех DNS запросов

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

Скажите что такая история тоже уже есть — кеширующие DNS сервера. Запросы отправляются не куда-то а им и они максимально оперативно отвечают.

А вот и не совсем так. Есть путь который позволит избавиться от значительного числа обращений к кеширующим серверам — очень простой и понятный путь. Сервера должны обращаться к пользователю. Проактивное кеширование должно находится не в браузере, а в кеширующем DNS сервере. Он должен push-ать в клиента ранее разрезолвенные имена на регулярной основе. Раз в 3-4 часа обязательно и в фоновом режиме.

При этом список отресолвенных dns адресов может формироваться несколькими способами. Самый простой — это пушать 5000 наиболее популярных доменных адресов диффами. Второй способ — это индивидуальный поведенческий подбор адресов на основе накапливаемых запросов от клиента. Если видно что каждый день пользователь обращается к одному и тому же доменному адресу, то для него можно составить индивидуализированный список.

 

А попозже и все остальные идеи напишу.


Viewing all articles
Browse latest Browse all 10

Latest Images

Trending Articles





Latest Images