Pull to refresh

Comments 5

UFO just landed and posted this here

Как сказал один умный человек (жаль не я):


чтобы сайт быстро работал он должен
1) отдавать ответ на 90% запросов из http-кэша (сервера и пользователя)
2) из оставшихся отдавать 90% из кэша приложения
3) из оставшихся отдавать 90% из кэша хранилища без чтения с диска
UFO just landed and posted this here
Например, http-кэша пользователя, который посещает не только один сайт.

HTTP кэш работает так:
1) Пользователь переходит на страницу. Браузер проверяет не лежит ли она в локальном кеше (на диске) на компьютере пользователя (не на сервере), не прошла ли дата в заголовке Expires или Date+max-age. Если не прошла, то обращения на сайт даже не происходит.


2) Если же нет нужных заголовков, то идет запрос на сервер с заголовками If-modified-since и If-none-match, которые берутся из Last-modified и etag. Веб-сервер или прокси (в зависимости от заголовков кеширования) вполне могут отдать ответ 304 Not modified и браузер опять-таки подгрузит страницу из локального кеша на диске пользователя.


3) Эти же заголовки попадают в программу и программа может проанализировать запрос и решит вернуть 304 Not Modified, что опять заставит браузер показать пользователю страницу из локального кеша.


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


Увы 1, 2 и 3 не работает при вбивании руками адреса и намеренном F5. По оптимизации главных\посадочных страницу с персонализацией меня есть отдельная методика.


Вопрос: есть ли ограничения на кэши, не учитывая которых можно ухудшить быстродействие сайта?

Наверное есть, но я не встречал. LRU кэш при достаточно большом объеме памяти все равно будет работать, даже если вы не очень грамотно занимаетесь кешированием.


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

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

UFO just landed and posted this here
Sign up to leave a comment.

Articles