Налаштування KeyCDN
KeyCDN — європейський CDN з простою моделлю оплати ($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
public function boot(): void {
if (config('cdn.enabled') && $cdnUrl = config('cdn.url')) {
URL::forceRootUrl($cdnUrl);
}
}
<img src="{{ asset('images/logo.png') }}" alt="Logo">
<!-- Виведе: https://cdn.example.ru/images/logo.png -->
Інвалідація кеша
use Illuminate\Support\Facades\Http;
class KeyCdnService {
public function purge(array $urls): void {
Http::withBasicAuth($this->apiKey, '')
->delete("https://api.keycdn.com/zones/purgeurl/{$this->zoneId}.json", [
'urls' => $urls,
]);
}
}
Час налаштування: кілька годин для налаштування CNAME.







