Varnish Cache пояснено
Якщо ви новачок у Varnish і хочете дізнатися більше про цей шалено швидкий інструмент кешування, ця стаття для вас. Ми поговоримо про те, що таке Varnish, як він працює і кому він підходить.

Varnish став синонімом високопродуктивного прискорення HTTP. Varnish Cache є open source reverse HTTP proxy прискорювачем, який чудово зменшує навантаження на ваш веб-сервер. Varnish ставиться перед веб-сервером і діє як proxy, що з'єднує браузер із сервером.

Проєкт Varnish був задумом данського технологічного архітектора Poul-Henning Kamp. Відомий консультант FreeBSD, Kamp був провідним розробником Varnish.
Проєкт Varnish започаткував онлайн-підрозділ норвезької газети Verdens Gang. Але програмне забезпечення виявилося настільки успішним, що зрештою його виділили в окрему компанію.
Та не хвилюйтеся, воно залишається безкоштовним і повністю open source, доступним за ліцензією BSD з двома пунктами. Якщо вам потрібна комерційна підтримка, її надає Varnish Software.
Сьогодні підтримка, супровід і розробка Varnish ведуться під егідою Varnish Software.
Як працює Varnish?
Уявіть такий сценарій. Ви заходите в людну кав'ярню і замовляєте фільтр-каву закладу. Людина за стійкою спершу перевіряє, чи є готовий свіжий кавник, щоб налити.
Якщо є, ви одразу отримуєте свою чашку. Якщо ні, замовлення йде до бариста, щоб заварити новий. Varnish виконує роботу людини за стійкою.
Varnish стоїть перед вашим веб-сервером, і коли відвідувач уперше запитує вебсторінку, Varnish отримує запит і передає його backend-серверу. Backend-сервер обробляє запит і надсилає відповідь назад у браузер.
Тим часом Varnish «кешує» відрендерений вміст і зберігає його в надшвидкій оперативній пам'яті.
Будь-який наступний запит тієї самої сторінки обслуговується безпосередньо з кешованої версії (з RAM!), не турбуючи веб-сервер чи базу даних.
Хто використовує Varnish?
Varnish використовують багато новинних і контентних сайтів з великим трафіком.
Varnish дає великий виграш у продуктивності сайтам з важким вмістом і великим трафіком. Його можна використовувати для кешування як статичного, так і динамічного вмісту.
Поширена помилкова думка, що Varnish лише для статичного вмісту, але з невеликим налаштуванням .VCL він чудово працює навіть для динамічних сайтів і мобільних застосунків.
Чому Varnish такий швидкий?
Якщо ви хочете обслуговувати тисячі одночасних запитів за секунду, не перевантажуючи веб-сервер, Varnish є одним з найкращих доступних HTTP-прискорювачів.

У конфігурації Varnish ви можете вказати, чи зберігати кеш на жорсткому диску, чи в RAM.
Щоб отримати миттєве відчуття «клацнув і вже є», вам варто тримати цей кеш виключно в RAM.
З правильно налаштованим Varnish ви побачите значно менший час відповіді та величезне зниження використання ресурсів сервера.
Чи складно налаштувати Varnish?
RHEL і похідні від нього дистрибутиви постачають Varnish пакетом.
Varnish має базову типову конфігурацію, яку можна використати одразу, щоб запустити прискорення HTTP з мінімумом клопоту. Сам Varnish не термінує HTTPS, тому на сучасному сайті він стоїть за TLS-термінатором, таким як HAProxy або nginx.
Varnish надає вам файл Varnish Configuration Language (VCL), у якому ви граєтеся з налаштуваннями, щоб тонко підлаштувати його продуктивність. Файл VCL каже Varnish точно, як обробляти процес кешування.
Коли і що кешувати, коли не кешувати і як довго тримати кешований вміст у пам'яті.
Опанування навичок .VCL може дати вам суперсили, дозволяючи змінювати майже кожен аспект HTTP-запиту та відповіді.
Коли варто використовувати Varnish
- Якщо у вас сайт з важким вмістом і частими сплесками трафіку.
- Varnish чудовий для серверів з важким навантаженням на базу даних. Кешуючи найчастіші веб-запити, ваш сервер MySQL може трохи відпочити.
- Якщо ви хочете зменшити активність диска, подовжуючи строк його служби.
- Якщо один веб-сервер і база даних мають обслуговувати тисячі одночасних відвідувачів.
Коли не варто використовувати Varnish?
Є чимало простіших способів суттєво підняти продуктивність, як-от мікрокешування NGiNX, які варто спробувати, перш ніж вдаватися до Varnish.
Для невеликих сайтів з менш ніж 1 000 переглядів сторінок на день вам, імовірно, вистачить оптимізованого LAMP-стека або NGiNX з PHP-FPM.
Через складність підлаштування файлу .VCL під ваші конкретні вимоги іноді Varnish просто не вартий зусиль. Змусити Varnish добре працювати з динамічним вмістом непросто. Так, можна використати ESI «hole punching», щоб віддавати користувацький вміст, але чи справді це потрібно?
Спершу зберіть низько висячі плоди
Перед Varnish зробіть дешевші виправлення: оптимізація зображень, мініфікація CSS і JavaScript, налаштування MySQL.
- Related reading: /blog/reasons-for-slow-website-loading/ with the Ukrainian h1 of that manuscript when it exists
Висновок
Налаштувати Varnish так, щоб він правильно віддавав вміст і відповідав вимогам вашої організації, може бути непросто. Правила закінчення кешу, time to live, кешування URL і вимоги до кешування об'єктів у Varnish дуже складні. Унаслідок цього багато консалтингових фірм народилося з потреби мати «впровадження Varnish» у своєму середовищі.
У EuroVPS ми запускаємо Varnish перед сайтами з великим трафіком, і наші інженери можуть допомогти вам спроєктувати рівень кешування для вашого.
З архіву блогу EuroVPS, уперше опубліковано 17 жовтня 2012 р..
Усі нотатки з практики