Тематические статьи →

Ускоряем работу сайта с помощью серверного кеширования

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

Что можно кеши­ро­вать?

Кеши­ро­вать можно целые стра­ни­цы, фраг­менты стра­ниц, резуль­таты выбо­рок из базы дан­ных и резуль­таты слож­ных вычис­ле­ний.

«Стра­нич­ное кэши­ро­ва­ние» — самое высо­ко­про­из­во­ди­тель­ное реше­ние, но не под­хо­дит для сай­тов, на кото­рых есть пер­со­на­ли­зи­ро­ван­ный кон­тент или есть вза­и­мо­дей­ствие с поль­зо­ва­те­лем. Всем поль­зо­ва­те­лям (или боль­шим груп­пам поль­зо­ва­те­лей, напри­мер, неза­ре­ги­стри­ро­ван­ным на сайте), в слу­чае исполь­зо­ва­ния заке­ши­ро­ван­ных стра­ниц, выдаётся одно и тоже содер­жа­ние. В слу­чае, если группа поль­зо­ва­те­лей может вза­и­мо­дей­ство­вать с сай­том, напри­мер, добав­лять товары в кор­зи­ну, то кэши­ро­вать стра­ницы цели­ком уже не полу­чит­ся.

«Фраг­мен­тар­ное кеши­ро­ва­ние» — наи­бо­лее рас­про­странён­ный тип кэши­ро­ва­ния — сохра­ня­ются отдель­ные блоки стра­ниц, кото­рые оди­на­ковы для боль­шой группы поль­зо­ва­те­лей. Из инте­рес­ных раз­но­вид­но­стей — мно­го­уров­не­вое кеши­ро­ва­ние (по типу мат­рёшки), когда кеши­ру­ются вло­жен­ные друг в друга фраг­менты, напри­мер, стра­ница ката­лога това­ров и кар­точки каж­дого отдель­ного това­ра.

«Кэши­ро­ва­ние резуль­та­тов запро­сов к БД» и «Кэши­ро­ва­ние резуль­та­тов вычис­ле­ний» — кеши­ро­ва­ние дан­ных, полу­ча­е­мых в резуль­тате слож­ных вычис­ле­ний или выбо­рок из БД, может очень серь­ёзно уско­рить при­ло­же­ние. В част­но­сти, это активно исполь­зу­ется задач по обра­ботке гра­фики и для фор­ми­ро­ва­ния ана­ли­ти­че­ских отчётов — слож­ные вычис­ле­ния часто зани­мают доста­точно про­дол­жи­тель­ное время и тре­буют боль­шого коли­че­ства ресур­сов, поэтому проще про­из­во­дить обра­ботку дан­ных зара­нее в фоно­вом режиме и хра­нить до момен­та, пока они не потре­буются.

Пре­иму­ще­ства кеши­ро­ва­ния

  1. Сни­же­ние нагрузки на базу дан­ных — еди­но­жды най­ден­ные резуль­таты могут быть мно­го­кратно исполь­зо­ва­ны.
  2. Сни­же­ние нагрузки на сер­вер при­ло­же­ния — од­на­жды создан­ная стра­ница может потом много раз отда­ваться поль­зо­ва­те­лям.
  3. Повы­ше­ние ско­ро­сти обра­ботки запро­сов поль­зо­ва­те­лей — если для обра­ботки запроса не тре­бу­ется обра­ще­ния к базе дан­ных, вычис­ле­ний и фор­ми­ро­ва­ния стра­ни­цы, а надо только забрать из хра­ни­лища кеша резуль­тат и отдать его поль­зо­ва­те­лю, то ответ на такой запрос будет дан прак­ти­че­ски мгно­вен­но.

Если резю­ми­ро­вать, то кеши­ро­ва­ние позволяет увеличить про­из­во­ди­тель­ность и устой­чи­вость к нагруз­кам.

Как кеши­ро­вать?

Кеши­ро­вать можно раз­ными спо­со­ба­ми, напри­мер, писать дан­ные непо­сред­ственно на диск или в опе­ра­тив­ную память (напри­мер, используя Memcached или Redis). Выбор спо­соба зави­сит от того, какие именно дан­ные кеши­ру­ются, насколько интен­сивно исполь­зу­ется кеш и где нахо­дится «сла­бое звено» в производительности.

Поделитесь с друзьями:


Информация о публикации:

Материал опубликован в 2014 году. Эта статья о веб-разработке и про бэкенд-разработку. При пере­пуб­ли­ка­ции обя­за­тельно ука­за­ние пер­во­ис­точ­ника в виде гипер­тек­сто­вой ссылки на сайт web-creator.ru

Воспользуйтесь нашими
знаниями и опытом

Отправьте нам сообщение при помощи формы. Или напишите на e-mail s@web-creator.ru

Мы максимально оперативно ответим Вам по электронной почте или перезвоним.

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

Либо просто позвоните нам по номеру: +7 495 215-1501

Мы работаем по будним дням с 10 до 19 часов.

Комплексные услуги

Реализация «под ключ» проектов по созданию различных видов сайтов, разработка веб-приложений для автоматизации бизнес-процессов, ведение контекстных и медийных рекламных кампаний, поисковое продвижение, комплексная поддержка веб-проектов, консалтинговые услуги.