UMGUM.COM 

Недобраузер Opera ( Слишком правильный. )

16 января 2011  (обновлено 15 августа 2016)

Эта публикация отнесена в архив. Она неактуальна.

В очередной раз проедусь по браузеру-недоделке по имени Opera.

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

Так-то оно так, но у меня есть повод. Я занимаюсь любительской web-разработкой. Просто из удовольствия, для себя. Нравится мне ковыряться в технологиях, протоколах, разбираться в языках программирования и творить что-то своё, неповторимое. Вот и сайт свой творю, от первой до последней буковки, от первого символа в заголовке запроса до закрытия сеанса ответа, самостоятельно. Отрабатываю до мелких деталей все моменты взаимодействия клиента (то есть браузера) и сервера.

Ключевым моментом разработки считаю единообразие реакций и отображения запрашиваемого ресурса в основных операционных системах и браузерах. Постоянно проверяю, как отрабатывает функционал ресурса в браузерах IE 5/6/7/8/9, Firefox 2/3, Opera, Safari, Chrome, Netscape, Konqueror, Galeon, Epiphany, Arora работающих на Windows, Linux и MacOS. Так вот, года три-четыре назад для обеспечения единообразия отображения приходилось сайт "дотачивать" для Microsoft IE 5/6. Теперь флаг передовиков подхватила Opera. Молодцы!


Далее пример. Коснёмся темы кеширования информации загруженной браузером клиента в локальное хранилище с сервера.

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

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

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

Так вот, оптимальная последовательность отработки запроса данных поддерживающих кеширование следующая:

1. Первичное получение данных;
2. При повторном посещении - загрузка данных с не истёкшим сроком кеширования из локального хранилища;
3. При первом принудительном обновлении (F5) - послать заголовок HTTP_IF_MODIFIED_SINCE для уточнения актуальности находящихся в локальном хранилище данных;
4. При повторном принудительном обновлении (F5) - послать безусловный запрос на получение данных с сервера.

Какие-то браузеры отрабатывают все четыре этапа, какие-то пропускают третий и сразу переходят к четвёртому.

Но не Opera. Они же правильные. Они же блюдут все стандарты трындец как чётко. Они лучше пользователя знают, что ему нужно, а что - нет. Они точно решили не допустить лишнего нагрева оборудования серверов и расхода процессорного времени клиента. Они никак не допустят лишнего трафика в сети и не станут пособниками глобального потепления. Они всегда будет посылать заголовок HTTP_IF_MODIFIED_SINCE, даже если клиент тридцать раз потребовал безусловного обновления данных, задолбив кнопку F5.


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )