Лучшая производительность для хранения статических файлов (изображения, CSS, JavaScript) - CDN - BlobStorage или WebRole

У меня есть очень простой вопрос о CDN - BlobStorage и WebRole, а также о производительности.

У меня очень простой веб-сайт со статическим контентом, HTML, Js, изображениями, CSS и видео (в общем, я мог бы максимально 3-5 МБ всего контента, если пользователи посещают весь сайт). Трафик моего веб-сайта будет на 98% из Великобритании, и я планирую привлечь максимум 500000 уникальных посетителей в день.

Мой вопрос о производительности.

Вы бы порекомендовали мне включить CDN на моей веб-ролике? Получу ли я от этого пользу? Есть ли польза от использования CDN, даже если мой трафик идет "в основном" из Великобритании? содержимое CDN кэшируется на прокси-серверах интернет-провайдеров (например, BT)?

Вы бы порекомендовали мне размещать изображения, видео и т. Д. В учетной записи для хранения больших двоичных объектов и указывать в ней абсолютный URL из веб-роли? Есть ли разница в производительности между размещением статического файла в BLOB-объекте (возможно, включение CDN в учетной записи хранения?) или просто размещением статического файла в веб-роли?

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

2 ответа

Решение

Единственное, о чем я могу думать, это то, что при использовании роли CDN у вас могут быть лучшие заголовки для изображений (Cache-Control, Expires), чтобы браузер и прокси-серверы могли долго кэшировать эти изображения, в то время как если вы обслуживаете эти изображения с вашего основного сайта вы отвечаете за контроль заголовков на этих ресурсах.

Обслуживание изображений из другого домена также поможет, потому что все запросы к ресурсам, размещенным на CDN (другое доменное имя, не используют домены 3-го уровня), не будут содержать файлы cookie и заголовки аутентификации, необходимые для основного сайта.

Размещение статического содержимого в хранилище BLOB-объектов (или CDN) значительно снижает нагрузку на экземпляры веб-ролей (в частности, IIS). Это сократит использование процессора и памяти, а также общую пропускную способность в и из ваших веб-экземпляров. Еще одна деталь: большинство браузеров настроены для (я полагаю) двух одновременных подключений к данному домену. Перемещение статического контента в Blob или CDN дает вам дополнительный домен и немного больше параллелизма в вашем браузере в отношении загрузки контента.

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

Что касается преимуществ прямого попадания в центр обработки данных: доступ к CDN не обязательно является ближайшим узлом географически; это основано на ряде факторов. Тем не менее, в регионе EMEA есть несколько узлов CDN (см. Полный список здесь). Вы всегда можете добавить CDN позже, но переход к хранилищу BLOB-объектов будет иметь положительное влияние на производительность вашего приложения, даже без CDN.

РЕДАКТИРОВАТЬ: есть еще одно преимущество хранения статического содержимого в BLOB-объектах по сравнению с пакетированием при развертывании: вы можете очень легко обновлять отдельные файлы без необходимости перестраивать / повторно развертывать весь пакет развертывания.

Другие вопросы по тегам