Розуміння кешування для OpenCart

21

Від автора: в OpenCart кешування — важливий фактор, адже ви маєте справу з веб-розробкою. Воно дійсно допомагає розвантажити важкий підйом, який повинен виконувати веб-сервер, щоб обслуговувати тисячі, якщо не мільйони запитів одночасно. В даний час є безліч доступних можливостей, які забезпечують підвищення продуктивності вашого веб-додатки, але основна концепція кешування залишається колишньою.

Мета кешування

Пройшли ті часи, коли потрібно було просто створити статичний HTML-сайт, що містить кілька сторінок, і все було готово. В цьому випадку не потрібно було турбуватися про паралельних запитах та інтенсивний трафік, що створюється на веб-сайті, так як набагато швидше відправляти ці статичні HTML-сторінки, ніж динамічні веб-сторінки, які займають досить багато серверних ресурсів для складання самих себе.

Типова динамічна сторінка робить багато, починаючи з запиту до бази даних та отримання даних від сторонніх постачальників послуг. Це вимагає багато для відображення сторінки, яка містить велику кількість інформації в різних форматах. Зокрема, не можна запросити базу даних для отримання однієї і тієї ж складної інформації для кожного запиту по мірі збільшення трафіку. Скоро сервери будуть тісно пов’язані з ресурсами, і перш ніж ви зможете щось зробити, вони зникнуть!

Таким чином, нам потрібно щось середнє, що прискорює роботу, і саме тут дає про себе знати кешування. Ідея кешування дуже проста — десь зберігаються обчислені / відформатовані результати і витягуються, коли це необхідно. Це «десь» може бути де завгодно: файлова система, пам’ять або база даних.

Крім того, є безліч опцій для кешування — Memcached, Redis, Varnish та інші. Їх можна використовувати у відповідності з особистими вимогами, а іноді поєднання декількох компонентів допомагає підвищити продуктивність експоненціально.

Розуміння кешування для OpenCart

Інтернет-магазин на OpenCart!

Створити інтернет-магазин на самій популярної CMS OpenCart з нуля!

Приступити до створення

Оскільки для пояснення входів і виходів кешування буде потрібно повна серія, а також щось поза рамками цієї статті, ми повернемося до контексту OpenCart і продовжимо його в наступному розділі.

Буде використовуватися остання версія OpenCart, тому переконайтеся, що вона встановлена.

Як працює базова кешування в OpenCart

Бібліотека кешування надається в ядрі, тому давайте відразу досліджуємо її. Ідіть і відкрийте system/library/cache.php файл в своєму улюбленому текстовому редакторі.

cache = new $class($expire);
} else {
exit(‘Error: Could not load driver cache’ . $driver . ‘ cache!’);
}
}
public function get($key) {
return $this->cache->get($key);
}
public function set($key, $value) {
return $this->cache->set($key, $value);
}
public function delete($key) {
return $this->cache->delete($key);
}
}

Почнемо з конструктора, він ініціалізує драйвер кешу, переданий у рядку конструктора. Якщо клас доступний для запитаного адаптера кешування, він буде ініціалізований цим $this->cache властивістю, інакше він вийде з повідомленням про помилку. В наступному розділі ми побачимо різні кешуючі адаптери.

Крім того, існує три функції-обгортки, які використовуються для виконання операцій, пов’язаних з кешуванням.

get метод використовується для вилучення значення з кешу.

$this->cache->get($key);

set метод використовується для зберігання значення в кеші.

$this->cache->set($key, $value);

delete метод використовується для видалення відображення ключ / значення з кешу.

$this->cache->delete($key);

Тому дуже просто використовувати функції кешування в модулях.

Під front-end є багато місць, де дані витягуються з сховища кешей. Перерахуємо деякі з них:

latest products (нові продукти)

bestseller products (популярні продукти)

list of manufacturers (список виробників)

list of countries (перелік країн)

Розуміння кешування для OpenCart

Інтернет-магазин на OpenCart!

Створити інтернет-магазин на самій популярної CMS OpenCart з нуля!

Приступити до створення

list of currencies (список валют)

list of zones ( список зон)

store settings (налаштування магазину)

У разі кешування файлів ви зможете знайти всі файли кешу, що зберігаються в system/cache каталозі. І хоча OpenCart очищає кеш при певних подіях, ви також можете очистити ці файли вручну, щоб отримати останні дані.

Це те, що стосується кэширующей обгортки. В наступному розділі ми побачимо різні адаптери кешування, доступні в ядрі, і фактичний важкий підйом, який вони виконують.

Кешуючі адаптери

Доступно три адаптера кешування в ядрі: OpenCart-file, memcache і apc . Кеш адаптер, що використовується в OpenCart – це файл.

Ось index.php фрагмент, з якого ініціалізується $cache об’єкт за допомогою адаптера кешування за замовчуванням.

// Cache
$cache = new Cache(‘file’);
$registry->set(‘cache’, $cache);

На жаль, немає настроюваного способу, що дозволяє перемикати адаптер кешування, оскільки він жорстко закодовано. Можна використовувати OCMOD для зміни адаптера кешування за замовчуванням без зміни основного файлу.

Оскільки реалізація кожного кешуючого адаптера майже однакова, ми розглянемо тільки один з адаптерів кешування, щоб дізнатися, що відбувається. Давайте візьмемо memcache, наприклад. Відкрийте system/library/cache/mem.php. У тому ж каталозі можна вивчити два інших адаптера file.php і apc.php.

expire = $expire;
$this->cache = new \Memcache();
$this->cache->pconnect(CACHE_HOSTNAME, CACHE_PORT);
}
public function get($key) {
return $this->cache->get(CACHE_PREFIX . $key);
}
public function set($key,$value) {
return $this->cache->set(CACHE_PREFIX . $key, $value, MEMCACHE_COMPRESSED, $this->expire);
}
public function delete($key) {
$this->cache->delete(CACHE_PREFIX . $key);
}
}

Кожен адаптер кешування», щоб уникнути конфліктів, визначається в просторі імен як «Cache».

Ті методи, які ми обговорювали в останньому розділі, закінчуються тут. Тому, коли ви викликаєте метод get у Cache класі, він по суті викликає get метод, визначений у фактичному класі адаптера, — у нашому випадку це Mem клас.

Логіка управління записами кешу відбувається в методах класу адаптера. Як можна побачити, в конструкторі Mem класу ми ініціалізувати об’єкт Memcache і встановили з’єднання з допомогою pconnect методу. Нарешті, ми використовуємо методи get, set і delete об’єкта Memcache для управління записами кеша.

З іншого боку, якщо ви подивитеся на реалізацію обробника файлів кешу, потрібно трохи зусиль для зберігання та вилучення записів кеша з використанням функцій файлової системи. Крім того, немає ніякої різниці в реалізації.

Це те, що стосується кешуючих адаптерів в OpenCart. Звичайно, ви можете піти вперед і зробити свій власний обробник кешування, якщо це необхідно. Вам просто потрібно реалізувати необхідні методи, і все готово.

От і все. Я сподіваюся, що вам сподобався підручник, і він буде допомагати вам використовувати кешування в ваших настроюються модулях по мірі необхідності.

Висновок

Сьогодні ми обговорили кешування в OpenCart. Ми почали з основ, і по мірі того, як ми просувалися, ми дослідили, як кешування використовується під front-end. Нарешті, ми пройшли через різні кешуючі адаптери доступні в OpenCart.

Розуміння кешування для OpenCart

Інтернет-магазин на OpenCart!

Створити інтернет-магазин на самій популярної CMS OpenCart з нуля!

Приступити до створення