Улучшает ли CDN задержку по сравнению с обычным хранилищем BLOB-объектов для блогов с однократной загрузкой?
Я рассматриваю решение для веб-сайта с высоким трафиком (миллионы посещений в день), где некоторый контент предоставляется посетителям непосредственно из хранилища BLOB-объектов Windows Azure. Контент, который будет обслуживаться из хранилища BLOB-объектов, - это предварительно вычисленные персонализированные блоги; то есть не обычный статический контент, которым пользуются многие пользователи. Моя цель - обслуживать этот контент с низкой задержкой.
Аудитория сайта тесно связана с единой страной Европы. Таким образом, первый логический ход состоит в выборе географического местоположения для учетной записи хранения, которая оказывается географически близкой к целевой стране.
Тогда мне интересно, если в этом контексте использование функции CDN еще больше увеличит задержку? В частности, улучшит ли это время ожидания при первом извлечении контента?
3 ответа
В сценарии, который вы описываете, он, скорее всего, будет медленнее. Это связано с тем, что (как указывает @Jaxidian) кэширование не происходит до тех пор, пока не будет запрошено содержимое.
Без CDN: пользователь запрашивает контент из центра обработки данных, в котором живут большие двоичные объекты (сегодня существует 8 вариантов центра обработки данных). Содержание возвращается напрямую.
С CDN: пользователь извлекает данные из "ближайшего" (самого близкого в сетевом смысле) центра обработки данных (сегодня существует 24 точки присутствия CDN). Локальный кэш CDN проверен. Если данные не находятся в кеше, содержимое запрашивается из исходного центра обработки данных, и кеш заполняется. Затем содержимое возвращается пользователю. Для первого поискового запроса это, очевидно, вредит задержке.
Однако в блоге может быть некоторое довольно статичное содержимое (таблицы стилей, javascript, логотипы, другой контент для всего блога), распространенное на страницах блога одного пользователя - и некоторое другое содержимое, общее для всех пользователей на платформе - это было бы более ценным, чтобы обслуживать через CDN для повторного доступа.
Обратите внимание, что в настоящее время в Windows Azure CDN нет способа заставить какой-либо узел CDN загружать данные (это делают только внешние запросы), и нет способа извлечь элемент из CDN (для этого используются только заголовки кэша HTTP), поэтому Вы должны быть осторожны с тем, как долго вы кешируете вещи в CDN (подумайте, когда публикуется запись в блоге).
Вы можете проверить загрузку своего веб-сайта из разных мест мира с помощью сайта WebPageTest: http://www.webpagetest.org/
Отчет действительно понятен и полон. Я также развернул веб-сайт с помощью BLOB-объекта Azure, и, действительно, первые вызовы выполняются медленнее, однако, если вы ожидаете большого международного трафика на каждом ресурсе, это хорошая идея.
Не уверен, что это факт. Может случиться так, что сетевое подключение от клиента к серверу будет медленным, а подключение от клиента к прокси-серверу CDN -> целевому серверу лучше / быстрее. Так что вы не можете быть уверены, но я согласен, что общее улучшение не должно быть значительным.