[Yii2] Comparación de Velocidad de Caché

La mayoría de los desarrolladores de sitios web tienden a ignorar el almacenamiento en caché sin darse cuenta de que puede perjudicar a sus aplicaciones. Un retraso de un segundo en el tiempo de acceso puede significar que estás perdiendo clientes o usuarios en favor de la competencia.

Yii2 soporta almacenamiento en caché en una variedad de métodos. Soporta almacenamiento en caché de fragmentos, almacenamiento en caché de datos, almacenamiento en caché de páginas y contenido dinámico. Los componentes de almacenamiento en caché se pueden intercambiar sin tener que cambiar el código que utiliza la caché.

En este artículo, haremos una comparación de las velocidades de caché en varios métodos.

  • Sin utilizar la caché
  • FileCache
  • DbCache
  • Redis

Pasos para hacer una comparación de velocidad de caché en yii2

  1. Crear una tabla mediante MySQL.
CREATE TABLE 'test_cache' (
  'id' INTEGER(11) NOT NULL AUTO_INCREMENT,
  'data' VARCHAR(20) COLLATE utf8mb4_general_ci DEFAULT NULL,
  PRIMARY KEY USING BTREE ('id')
) ENGINE=InnoDB
AUTO_INCREMENT=1 ROW_FORMAT=DYNAMIC CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';

Cree una tabla simple con columnas de id y datos. A continuación, cree un registro para la tabla.

En esta prueba, añadimos una columna de datos con caracteres aleatorios con 20 caracteres. El número de líneas que creamos es de 10.000 líneas.

  1. Crea un modelo de la tabla, por ejemplo con el nombre «Testcache».
  2. Crea un Controlador para mostrar una respuesta, por ejemplo con el nombre «TestcacheController».

«TestcacheController» sin caché

public function actionIndex()
{
    $data=TestCache::find()->all();
    Yii::$app->response->format = yiiwebResponse::FORMAT_JSON;
    return $data;
}

«TestcacheController» con caché .

public function actionIndex(){
    $data = Yii::$app->cache->getOrSet('testcachedata', function () {
        return TestCache::find()->all();
    });
    Yii::$app->response->format = yiiwebResponse::FORMAT_JSON;
    return $data;
}
  1. Configura la caché de yii2 en «config/main.php.

Configuración de «FileCache».

'cache' => [
    'class' => 'yiicachingFileCache',
],

Configuración de «DbCache».

        'cache' = > [
            'class' => 'yiicachingDbCache',
        ],

Para la configuración «DbCache», cree previamente una tabla con el nombre «cache»

CREATE TABLE 'cache' (
  'id' CHAR(128) COLLATE utf8mb4_general_ci NOT NULL,
  'expire' INTEGER(11) DEFAULT NULL,
  BLOB 'data',
  PRIMARY KEY USING BTREE ('id')
) ENGINE=InnoDB
ROW_FORMAT=DYNAMIC CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';

Configuración de Redis

'cache' => [
    'class' => 'yiiredisCache',
],
'session' => [
    'class' => 'yiiredisSession',
],
'redis'     => [
    'class' => 'yiiredisConnection',
    'hostname' => '127.0.0.1',
    'port' => 6379,
    'database' => 0,
 
], 

Previamente, instale Redis con

php composer.phar require --prefer-dist yiisoft/yii2-redis:"~2.0.0"
  1. Pruebas de respuesta. Para probar la velocidad de respuesta, podemos utilizar Postman para mirar la velocidad de respuesta y mostrar los resultados de la misma.
yii2 cache 01

Resultados de la prueba de uso de caché en Yii2

yii2 cache 02

Los resultados de la prueba anterior son los que obtuvimos utilizando el mismo ordenador. En la velocidad de respuesta obtenida influyen mucho varias condiciones, una de las cuales es el hardware utilizado y también el sistema operativo.

A partir de estos resultados, al menos obtenemos una visión general de la velocidad de respuesta de algunos métodos de uso de la caché.

Suerte…

ARTÍCULOS RELACIONADOS

Artículos más recientes