Включение кэша для ускорения Osclass
Osclass предоставляет несколько механизмов кэширования для повышения производительности и снижения нагрузки на базу данных. Прежде чем включать какой-либо метод кэширования, убедитесь, что соответствующее расширение кэша установлено и включено на вашем сервере.
Поддерживаемые методы кэширования
· File (файловый, по умолчанию)
· APC / APCu
· Memcache
· Memcached
· Redis
Включение кэша в Osclass
Чтобы включить кэширование, вы должны изменить файл config.php в корневой директории вашей установки Osclass.
APC / APCu
Добавьте следующую строку в config.php:
define(‘OSC_CACHE’, ‘apc’);
Memcache
Для Memcache необходимо указать хост и порт сервера Memcached:
define(‘OSC_CACHE’, ‘memcache’);
$_cache_config[] = array(
‘default_host’ => ‘127.0.0.1’,
‘default_port’ => 11211,
‘default_weight’ => 1
);
Redis
Для Redis необходимо указать хост и порт сервера Redis:
define(‘OSC_CACHE’, ‘redis’);
$_cache_config[] = array(
‘default_host’ => ‘127.0.0.1’,
‘default_port’ => 6379,
‘default_password’ => »,
‘default_db’ => 0
);
Реализация кэша в Osclass
Добавление данных в кэш
Для хранения данных в кэше Osclass предоставляет функцию osc_cache_add():
function osc_cache_add($key, $data, $expire = 0) {
$key .= osc_current_user_locale();
return Object_Cache_Factory::newInstance()->add($key, $data, $expire);
}
Получение данных из кэша
Чтобы получить сохранённые данные, используйте функцию osc_cache_get():
function osc_cache_get($key, &$found) {
$key .= osc_current_user_locale();
return Object_Cache_Factory::newInstance()->get($key, $found);
}
Удаление кэшированных данных
Чтобы удалить конкретные данные из кэша:
function osc_cache_delete($key) {
$key .= osc_current_user_locale();
return Object_Cache_Factory::newInstance()->delete($key);
}
Очистка всего кэша
Чтобы очистить все кэшированные данные:
function osc_cache_flush() {
return Object_Cache_Factory::newInstance()->flush();
}
Инициализация кэша
Osclass инициализирует систему кэширования с помощью класса Object_Cache_Factory. Этот класс определяет тип кэша, указанный в config.php, и загружает соответствующую реализацию кэширования.
class Object_Cache_Factory {
private static $instance;
public static function newInstance() {
if(self::$instance == null) {
self::$instance = self::getCache();
}
return self::$instance;
}
public static function getCache() {
if(self::$instance == null) {
$cache = defined(‘OSC_CACHE’) ? OSC_CACHE : ‘default’;
$cache_class = ‘Object_Cache_’ . $cache;
$file = __DIR__ . ‘/caches/’ . $cache_class . ‘.php’;
if(file_exists($file)) {
require_once $file;
if(class_exists($cache_class) && call_user_func([$cache_class, ‘is_supported’])) {
self::$instance = new $cache_class();
} else {
require_once __DIR__ . ‘/caches/Object_Cache_default.php’;
self::$instance = new Object_Cache_default();
}
return self::$instance;
}
throw new RuntimeException(‘Unknown cache’);
}
return self::$instance;
}
}
Устранение проблем с кэшем
Кэш не работает
· Убедитесь, что требуемое расширение кэширования (APC, Memcached, Redis) установлено и включено на вашем сервере.
· Проверьте, что правильный тип кэша указан в config.php.
Низкая производительность
· Memcache и Redis обычно обеспечивают лучшую производительность, чем файловое кэширование.
· Убедитесь, что служба кэширования правильно настроена и запущена.
Настройка и правильная реализация кэша в Osclass позволяет значительно повысить производительность сайта и снизить нагрузку на базу данных.
