Назад | Перейти на главную страницу

CDN или отдельный сайт для хранения статического контента?

Если я правильно понимаю, у меня есть два варианта статических файлов:

  1. Используйте CDN и закидывайте на него все мои статические файлы.
  2. Используйте отдельный домен только для хранения статических файлов, чтобы пользователи могли загружать их одновременно.

Итак, я предполагаю, что это либо один из вариантов, либо мне нужен отдельный домен, а затем использовать CDN для получения файлов из этого домена? Потому что я предполагаю, что даже если у меня есть CDN, мне все равно нужно иметь локальную копию статического контента где-нибудь на моем основном сайте или на сайте статического контента, например static.domain.com?

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

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

Чаще всего он используется для настройки домена (origin.example.com), который обслуживает ваши статические файлы. Однако, когда вы отправляете файлы, вместо того, чтобы указывать на источник, вы указываете домен, который вы настроили, чтобы указать CDN на (static.example.com). CDN будет автоматически хранить кешированные версии ваших файлов в определенном количестве тейров и уменьшать нагрузку на ваш сервер, называемый «исходным сервером». Многие сети CDN используют только один уровень кэширования, называемый пограничным, но некоторые также включают в себя второй уровень, называемый промежуточным. В этом случае у вас может быть n пограничных серверов, разбросанных по всему миру, которые запрашивают региональные главные серверы, называемые промежуточными серверами. Затем они будут обновляться по источнику, чтобы еще больше уменьшить количество попаданий, которые получает исходный сервер.

Для эффективного обслуживания статических файлов вам не нужен CDN или отдельный домен. Кеширующий (обратный) прокси будет очень эффективным. Просто убедитесь, что у вас настроены соответствующие заголовки. Я бы посоветовал взглянуть на Varnish и Nginx.

Если вас беспокоит масштабирование и производительность, я также рекомендую работы Джона Олспоу и Тео Шлосснагла.