Продовження статті про стратегії кешування в Drupal. Оригінал англійською можна подивитися тут.
В останньому пості ми розглянули які механізми кешування є в Drupal "з коробки". Ми зрозуміли як Drupal кешируєт сторінки для анонімних користувачів і знайшли рішення, що дозволяють віддавати кешированниє сторінки без завантаження Drupal (використовуючи зворотний проксі, наприклад, Varnish або перенаправлення запитів при використанні модуля Boost). Також ми побачили, що навіть використовуючи ці інструменти кешування, Drupal також може зберігати кешування сторінки в базі даних. Однак Drupal дозволяє прозоро підключати і інші більш швидкі кешуючий бекенд:
- Memcache найбільш часто використовується в Drupal як кешуючий бекенд. Він добре підтримується модулями і також доступний в Acquia Cloud. Memcache досить просто масштабується і модуль memcache дозволяє призначати кожному Drupal cache type різні cache bin. Це дозволяє без проблем розміщувати різні bins на різних серверах. Однак memcache повинен знаходиться максимально "близько" до веб-сервера, а краще на одному сервері. Memcache вкрай необхідний в архітектурі проектів, в яких потрібно часткове кешування сторінок для зареєстрованих користувачів.
- APC також використовується для зберігання кешування ключів. APC - це популярний акселератор PHP, прискорює веб-сайти шляхом кешування в пам'яті php скриптів і запобігає читання цих скриптів з диска. Для CMS типу Drupal, які при кожному запиті завантажують багато php файлів, наявність встановленого APC просто необхідно. Навіть якщо використання APC швидше, ніж використання memcache, його не можна масштабувати на кілька серверів і в деяких конфігураціях пам'ять, яка використовується php процесом, не може бути розділяється з іншими процесам, це є суттєвим недоліком при порівнянні з memcache.
- І інші, включаючи Redis, Filecache або MongoDB. Все з них мають модулі для Drupal 6 і 7, що надають різні рівні підтримки кешування Drupal.
Інший кешуючий бекенд для Drupal може допомогти в прискоренні генерації елементів сторінок Drupal, таких як блоки, уявлення і Ноди.
Заміна кешуючого бекенд в більшості випадків досить простий процес, для цього достатньо в файлі конфігурації settings.php вказати інший кешуючий бекенд і налаштування для нього. Наприклад для memcache необхідно додати наступні рядки в settings.php:
Часткове кешування сторінок
Крім забезпечення високорівневого кешування сторінок Drupal також може кешувати різні елементи сторінок. Ці елементи можуть бути кешованими і використані при наступної генерації сторінки. Ядро Drupal і популярні модулі мають можливість кешування результатів виконання, як для анонімних користувачів, так і для зареєстрованих, наприклад:
Кешування сторінок для зареєстрованих користувачів
- Для кожного запиту модуль визначає чи може сторінка цим шляхом і для цієї ролі користувача знаходиться в кеші.
- Якщо може, то Drupal шукає в кеші коректну версію цієї сторінки.
- Якщо знайшов, то відправляє цю сторінку користувачу, інакше генерує сторінку і зберігає її в кеші для наступних запитів.
Autcache додатково зберігає в cookie ім'я користувачам і email, які можуть бути використані в шаблоні сторінки.
Autcache працює як обгортка кешуючого бекенд, яка відмінно інтегрується з іншими Кешуються беендамі (Memcache і Cacherouter). Встановити модуль можна наступним чином (використовувані кешуючий бекенд буде автоматично визначено):
Authcache автоматічіскі намагається зробити include для файлів Cache Router або Memcache. Якщо використовується інший кешуючий модуль, то необхідно вказати шлях до нього, наприклад:
Сторінка конфігурації модуля знаходиться в меню Конфігурація-> розробка-> Продуктивність, на ній можна задати всі налаштування пов'язані з шляхами, ролями і настройками кешування. Доступний оцінний режим, який може показувати зневадження специфічну для ролі, яка може допомогти зрозуміти чи правильно працює кешування. Модуль Authcache зараз має стабільну версію для Drupal 6 і знаходиться в стадії активної розробки для Drupal 7.
запобігання бутстрапа
Ілля (гість)