Не всі коди WP - це публічний код
Якщо ви збираєтесь випустити щось публічне, то всі речі, про які говорив Ковшенін , цілком справедливі.
Речі йнакше, якщо ви збираєтесь написати приватний код для себе або своєї компанії.
Зовнішній кеш об'єктів - велика перевага, в будь-якому випадку
Налаштувати зовнішній стійкий кеш-об'єкт дуже рекомендується , коли можна.
Все, що було сказано у відповіді ковшеніна про перехідні та MySQL, є дуже правдивим, і враховуючи, що сам WP і купа плагінів використовують кеш об'єктів ... то покращення продуктивності, яке ви отримали, абсолютно варто (малих) зусиль для налаштування. сучасна кеш-система типу Redis або Memcached.
Кешовані значення можуть не бути там: це добре
Крім того, так, кеш зовнішнього об'єкта не є надійним. Ніколи не слід покладатися на той факт, що є тимчасовий. Вам потрібно переконатися, що він працює, якщо кешоване не там, де вони повинні бути.
Кеш - це не зберігання, кеш - кеш.
Використовуйте кеш вибірково
Дивіться цей приклад:
function my_get_some_value($key) {
// by default no cache when debug and if no external object_cache
$defUse = ! (defined('WP_DEBUG') && WP_DEBUG) && wp_using_ext_object_cache();
// make the usage of cache filterable
$useCache = apply_filters('my_use_cache', $defUse);
// return cached value if any
if ($useCache && ($cached = get_transient($key))) {
return $cached;
}
// no cached value, make sure your code works with no cache
$value = my_get_some_value_in_some_expensive_way();
// set cache, if allowed
$useCache and set_transient($key, $value, HOUR_IN_SECONDS);
return $value;
}
Використовуючи такий код на вашому приватному веб-сайті, продуктивність сайту може значно покращитися , особливо якщо у вас багато користувачів.
Зауважте, що:
- За замовчуванням кеш не використовується при налагодженні, тому, сподіваємось, у вашому середовищі розробки. Повірте, кеш може зробити налагодження пеклом
- За замовчуванням кеш також не використовується, коли WP не встановлено для використання зовнішнього кешу об'єктів. Це означає, що всі проблеми, пов'язані з MySQL, не існують, тому що ви не використовуєте перехідних при використанні MySQL. Ймовірно, легшою альтернативою було б використання
wp_cache_*
функцій , тому якщо не встановлений зовнішній кеш, кеш трапляється в пам'яті, а база даних ніколи не залучається.
- Використання кеша є фільтрувальним, щоб обробити деякі крайні випадки, які можуть виникнути
Немає веб-шкали, якщо немає кешу
Не слід намагатися вирішувати проблеми з швидкістю з кешем. Якщо у вас проблеми зі швидкістю, то вам слід заново подумати про код.
Але для масштабування веб-сайту на веб-шкалі кеш дуже потрібен .
І багато разів (але не завжди) фрагмент кешований кеш-пам'ять набагато гнучкіший і підходить, ніж агресивне кешування повної сторінки.
Ваші запитання:
Чи варто взагалі використовувати перехідний API?
Це залежить .
Ваш код споживає багато ресурсів? Якщо ні, можливо, немає необхідності кешу. Як говорилося, справа не лише в швидкості. Якщо ваш код працює швидко, але для нього потрібна купа процесора та пам'яті для пари користувачів ... що буде, коли у вас є 100 або 1000 одночасних користувачів?
Якщо ви усвідомлюєте, що кеш буде гарною ідеєю ..
... і є публічним кодом: напевно, немає . Ви можете розглянути можливість кешування вибірково, як у моєму прикладі в публічному коді, але, як правило, краще, якщо ви залишаєте такі рішення виконавцям.
... і є приватним кодом: дуже, мабуть, так . Але навіть для приватного коду вибіркове кешування - все-таки хороша річ, наприклад, для налагодження.
Пам'ятайте, все одно, що wp_cache_*
функції можуть надати вам доступ до кешу без ризику забруднення бази даних.
Чи варто використовувати API перехідних процесів для кешування масиву $ related_posts або рядка $ html_output?
Це залежить від багатьох речей. Наскільки великі струни? Який зовнішній кеш ви використовуєте? Якщо ви збираєтеся кешувати публікації, зберігання ідентифікатора як масиву може бути хорошою ідеєю, запит на гідну кількість публікацій за їх ідентифікатором відбувається досить швидко.
Заключні ноти
Перехідний API - це, мабуть, одна з найкращих речей WordPress. Завдяки плагінам, які ви можете знайти для будь-якого типу кеш-систем, це стає дурним простим API для великої кількості програмного забезпечення, яке може працювати під кришкою.
Поза WordPress таку абстракцію, яка працює з коробки безліччю різних систем кешування, і дозволяє вам переходити з однієї системи в іншу без особливих зусиль.
Ви рідко можете почути, як я кажу, що WordPress кращий за інші сучасні речі, але тимчасовий API - це одна з небагатьох речей, які мені не вистачає, коли я не працюю з WordPress.
Безумовно, кеш складний, не вирішує проблем з кодом і не є срібною кулею, але це щось, що вам потрібно для створення сайту з високим трафіком, який працює.
Ідея WordPress використовувати недооптимізовану таблицю MySQL для кешування є досить божевільною, але не краще утримуватись від кешу лише тому, що WordPress за замовчуванням це робить.
Вам просто потрібно зрозуміти, як все працює, а потім зробити свій вибір.