Настройка CDN (KeyCDN) для сайта

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.
Разработка и обслуживание любых видов сайтов:
Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

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

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Настройка CDN (KeyCDN) для сайта
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    874
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851

Настройка KeyCDN

KeyCDN — европейский CDN с простой ценовой моделью (pay-as-you-go, $0.04 за ГБ), 35+ точек присутствия, специализация на доставке статических файлов. Хороший выбор для небольших проектов и european-first аудитории.

Создание Zone

Зона (Zone) в KeyCDN — это конфигурация для одного источника. Типы:

  • Pull Zone — KeyCDN сам забирает контент с origin при первом запросе (рекомендуется)
  • Push Zone — файлы загружаются напрямую через rsync/FTP/API

Pull Zone через API

curl -X POST \
    -u api_key: \
    -H "Content-Type: application/json" \
    -d '{
        "name": "example-assets",
        "type": "pull",
        "origins": [{"url": "https://example.ru"}],
        "ssl": true,
        "cors_headers": true,
        "cache_headers": true,
        "expire": 2592000,
        "custom_domains": ["cdn.example.ru"]
    }' \
    https://api.keycdn.com/zones.json

DNS настройка

После создания zone KeyCDN выдаёт CNAME (например example-assets-1234.kxcdn.com). Добавить CNAME-запись:

cdn.example.ru → example-assets-1234.kxcdn.com

SSL для кастомного домена — KeyCDN выпускает Let's Encrypt автоматически.

Интеграция с Laravel

// config/cdn.php
return [
    'url' => env('CDN_URL', ''),
    'enabled' => env('CDN_ENABLED', false),
];

// AppServiceProvider: переопределить URL для ассетов
public function boot(): void
{
    if (config('cdn.enabled') && $cdnUrl = config('cdn.url')) {
        URL::forceRootUrl($cdnUrl);
    }
}
{{-- В шаблонах -- }}
<img src="{{ asset('images/logo.png') }}" alt="Логотип">
{{-- Выдаст: https://cdn.example.ru/images/logo.png -- }}

Инвалидация кеша

use Illuminate\Support\Facades\Http;

class KeyCdnService
{
    private string $apiKey;
    private string $zoneId;

    public function purge(array $urls): void
    {
        Http::withBasicAuth($this->apiKey, '')
            ->delete("https://api.keycdn.com/zones/purgeurl/{$this->zoneId}.json", [
                'urls' => $urls,
            ]);
    }

    public function purgeAll(): void
    {
        Http::withBasicAuth($this->apiKey, '')
            ->get("https://api.keycdn.com/zones/purge/{$this->zoneId}.json");
    }
}

Настройка заголовков origin

KeyCDN кеширует то, что отдаёт origin. Настроить правильные заголовки на Nginx:

location /assets/ {
    expires 1y;
    add_header Cache-Control "public, max-age=31536000, immutable";
    add_header Access-Control-Allow-Origin *;  # для шрифтов через CDN
}

Срок настройки: несколько часов для подключения и настройки CNAME.