Использование кэширования (и аппаратного обеспечения) для ускорения страниц

Использование кэширования (и аппаратного обеспечения) для ускорения страниц

Для понимания уровней кэширования вообразите себе луковицу. У нее есть наружный слой, который виден сразу. Снимите этот слой, и вы найдете другой слой, под которым располагается еще один.

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

Кэширование в браузере

Браузер вашего покупателя может быть использован для кэширования вашего магазина. Браузер будет сохранять и хранить в кэше нужные ему файлы, чтобы для повторного доступа к этим файлам не требовалось обращаться к серверу – программному обеспечению, которое получает файлы и “сервирует” их для других пользователей.

Если браузеру нужен файл – скажем, файл изображения с именем “ipad-white.jpg” – то сервер перешлет этот файл браузеру. Следующий раз, когда потребуется это изображение, браузер обнаружит, что файл уже загружался, и не будет запрашивать сервер для получения новой копии файла. Вместо этого он использует уже существующий файл, экономя время и не загружая канал связи.

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

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

Веб-сервер

На один слой ниже располагается Web-сервер. Именно к нему обращается браузер, когда ему нужен файл.

Web-сервер посылает файл браузеру одним из трех способов:

  • Для существующих файлов, сервер отыскивает их на своем жестком диске, и отсылает браузеру.
  • Для файлов, которые должны быть созданы, Web-сервер связывается с сервером приложений, который представляет собой еще один слой.
  • Если файл не может быть найден на жестких дисках, или в сервере приложений, то Web-сервер отправляет браузеру сообщение об ошибке 404 – файл не найден.

Самый быстрый способ – это когда файл уже существует на жестких дисках Web-сервера. Сервер тогда может отправить файл браузеру немедленно. Единственное, что здесь реально влияет на скорость, это ограничение скорости передачи в сети между браузером и Web-сервером.

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

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

Сервер приложения

Сервер приложения является тем слоем, где выполняется построение динамических страниц. Иногда сервер приложений является частью Web-сервера, как в случае модуля mod_php. В других случаях серверы приложений представляют собой отдельные программы, которые могут находиться, как на том же компьютере, так и на других компьютерах.

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

На уровне сервера приложений существует множество возможностей кэширования.

  • В кэш может быть помещена целая страница, которая будет повторно отправляться Web-серверу при запросе.
  • В кэш могут помещаться части страниц, и когда эти части требуются снова, они могут быть собраны быстрее. Примером может служить верхняя неизменная часть страницы, выделенная для навигации. Она может быть кэширована и повторно использована при сборке любой другой страницы.
  • В кэш могут помещаться объекты и расчеты, чтобы, когда они снова требуются странице, их было можно, как говорят, “забрать с полки”. Например, содержимое тележки покупателя может быть кэшировано вместе с общей стоимостью товаров в ней.

Для этого слоя было создано много средств и методов кэширования.

Сервер базы данных

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

Это означает, что сервер базы данных должен быть очень занят.

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

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

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

Аппаратное обеспечение

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

Однако существует два типа оптимизации аппаратного обеспечения, не связанные с кэшированием, которые почти всегда позволяют увеличить скорость работы электронного магазина.

  • Масштабирование. Это означает установку более мощных и более быстрых серверов. Удвойте память, замените процессор на более мощный, установите более быстрые жесткие диски. В сущности, нужно увеличивать емкость и скорость аппаратного обеспечения сервера.
  • Кластеризация. Это означает увеличение количества одинаковых серверов и соединение их таким образом, чтобы они могли разделять нагрузку между собой. Вместо одного сервера, обслуживающего 100 процентов вашего трафика, используйте два сервера, каждый из которых будет обслуживать 50 процентов.

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

Слои дополняют друг друга

Все слои – браузеры, серверы, аппаратное обеспечение – работают совместно.

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

Web-сервер может забирать целые страницы от сервера приложений, и кэшировать их, чтобы не беспокоить сервер приложений и сервер базы данных одними и теми же запросами.

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

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

Original

Reviewer
Использование кэширования (и аппаратного обеспечения) для ускорения страниц
Название
Использование кэширования (и аппаратного обеспечения) для ускорения страниц
Описание
В то время как кэширование является очень мощным средством и существует много путей его обеспечения, необходимо потратить время на то, чтобы понять, какой слой является основной причиной проблем с производительности. Например, если ваш Web-сервер сам по себе реагирует медленно, то оптимизация сервера базы данных будет производить минимальный эффект.
Автор
Издатель
8d9.ru
Лого
Использование кэширования (и аппаратного обеспечения) для ускорения страниц
Оценка
Новые записи