Що таке CDN?
Мережа доставки (і дистрибуції) контенту (англ. Content Delivery Network або Content Distribution Network, CDN) - географічно розподілена мережева інфраструктура, що дозволяє оптимізувати доставку і дистрибуцію контенту кінцевим користувачем в мережі (джерело).
Кому і нащо потрібно використовувати CDN?
CDN використовують всі великі веб-портали. По-перше це зменшує навантаження на власний сервер - статичні файли будуть віддавати сервери CDN. По-друге це збільшує швидкість завантаження Вашого додатку користувачу - дані будуть завантажуватися з найближчого CDN-сервера, тобто по найменшому мережевому маршруту.
Цікаві факти:
1) Amazon: кожні 100 ms вповільнення завантаження сторінки зменшують кількість продаж на 1% (Джерело: Greg Linden, Amazon)
2) Google: 500 ms вповільнення видачі даних тягнуть за собою 20% втрат пошукових запитів (Джерело: Marrissa Mayer, Google)
3) Yahoo!: 400 ms додаткового часу завантаження сторінки викликають від 5 до 9% збільшення числа людей, які натиснули "назад" до завершення завантаження (Джерело: Nicole Sullivan, Yahoo!)
Отже.. швидкість завантаження сторінки - це важливо!:)
CDN & Drupal
Для інтеграції інфраструктури CDN в Drupal сайти наші веб розробники використовують одноіменний модуль CDN.
Для інсталяції і налаштування модуля потрібно:
1) застосувати патч до ядра, якщо Ви використовуєте Drupal 6 (в Pressflow версії і сьомому Друпалі цей патч вже є в ядрі)
2) підключитися до одної (чи більше) CDN мережі (найбільш популярні і відомі це VoxelCAST, Akamai, Amazon...)
3) заповнити поле CDN MAPPING на сторінці /admin/settings/cdn/details.
Для того щоб всі файли завантажувалися з одного CDN сервера просто вкажіть шлях до нього, наприклад "cdn.example.com".
4) включити використання CDN (шлях - /admin/settings/cdn, радіобатон статус)
Приклад розширеного налаштування поля CDN MAPPING
http://cdn.example.com|.css .ico .svg .otf .ttf .swf .zip .rar .gz .7z http://img1.example.com|.jpg .jpeg .png .gif http://img2.example.com|.jpg .jpeg .png .gif http://img3.example.com|.jpg .jpeg .png .gif http://img4.example.com|.jpg .jpeg .png .gif http://media.example.com|.flv .avi .mp3
В нашому випадку ситуація була наступна:
http://cdn.example.com,
http://img1.example.com,
http://img2.example.com,
http://img3.example.com,
http://img4.example.com – 5 субдоменів (аліасів) для яких прописані CNAME записи на одній і той же аккаунт Origin Pull -CDN сервіса.
http://media.example.com – окремий CDN провайдер для великих файлів (наприклад, Amazon S3).
Чому 4 хостнейма окремо для картинок? Розпаралелювання навантаження.
Як стверджує http://www.browserscope.org/ сучасні браузери по замовчуванню не дозволяють робити більше 6 з'єднань з одним хостнеймом. Тобто, якщо у Вас на сайті завантажується ХХХ об'єкта (наприклад, картинок), то одночасно браузер буде завантажувати не більше шести.
Якщо ж у нас буде 4 хостнейма, то число одночасних завантажень відповідно збільшується в чотири рази. А це дає не малий приріст в швидкості завантаження сторінки.
Але також потрібно врахувати, що браузери дозволяються не більше 30-35 з'єднань на одно сторінку. Тобто створення 5 чи більше хостнеймів вже не буде збільшувати швидкість завантаження, а навпаки, зменшуватиме її через DNS lookup'пи.