Mejorar el rendimiento de Drupal: activar la cache de Views.

En una de las charlas de la DrupalCamp 2014 Pedro (aka Niteman) recomendaba activar la cache de views.

Lo cierto es que me sorprendío, yo pensaba que la cache de Drupal también se cacheaba las consultas de Views, pero Niteman me ha confirmado que no, que cada vez que se pinta una página con vistas se realiza una consulta a la query que ha creado con Views.

Y con esta informa en mente he creado dos vistas, simplemente le he dado a crear vista, he agregado la url de la página y una la he guardado con cache y otra sin cache, luego en ambos casos he ejecutado el siguiente test: ab -n 100 -c 10, y estos son los resultados:

Con cache:
ab -n 100 -c 10 http://labo.local/pruebas
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking labo.local (be patient).....done

Server Software: Apache/2.2.22
Server Hostname: labo.local
Server Port: 80

Document Path: /pruebas
Document Length: 20809 bytes

Concurrency Level: 10
Time taken for tests: 0.213 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 2125300 bytes
HTML transferred: 2080900 bytes
Requests per second: 469.25 [#/sec] (mean)
Time per request: 21.311 [ms] (mean)
Time per request: 2.131 [ms] (mean, across all concurrent requests)
Transfer rate: 9739.18 [Kbytes/sec] received

Connection Times (ms)
min mean [+/-sd] median max
Connect 0 1 3.9 0 22
Processing 7 20 5.2 20 31
Waiting 4 17 4.5 17 30
Total 10 21 5.1 21 31

Percentage of the requests served within a certain time (ms)
50% 21
66% 23
75% 25
80% 26
90% 28
95% 29
98% 30
99% 31
100% 31 (longest request)

Sin cache:
ab -n 100 -c 10 http://labo.local/pruebas2
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking labo.local (be patient).....done

Server Software: Apache/2.2.22
Server Hostname: labo.local
Server Port: 80

Document Path: /pruebas2
Document Length: 20822 bytes

Concurrency Level: 10
Time taken for tests: 0.204 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 2126600 bytes
HTML transferred: 2082200 bytes
Requests per second: 489.79 [#/sec] (mean)
Time per request: 20.417 [ms] (mean)
Time per request: 2.042 [ms] (mean, across all concurrent requests)
Transfer rate: 10171.76 [Kbytes/sec] received

Connection Times (ms)
min mean [+/-sd] median max
Connect 0 2 4.0 0 17
Processing 7 18 4.9 19 34
Waiting 2 16 5.0 17 33
Total 8 20 5.1 19 37

Percentage of the requests served within a certain time (ms)
50% 19
66% 21
75% 22
80% 23
90% 26
95% 30
98% 37
99% 37
100% 37 (longest request)

Los datos totales muestran que no existe una gran diferencia entre las dos páginas, pero si tenemos en cuenta que son páginas muy básicas en Drupal, sin imágenes, sin más elementos, es normal que tengamos valores similares. En sites más grandes con tráfico de verdad, y puede que hasta con varias vistas a la vez en la misma página la cosa debería mejorar de forma muy interesante.

Quiero hacer una prueba con un sitio real, con unas cuantas vistas y ver cual es el resultado, "en breve en sus mejores cines".

Oskar