Who's online, drupal 6 y Pressflow

Una persona, que tiene un portal de noticias en Drupal 6 y hosting compartido me preguntaba como mejorar la velocidad sin migrar a D7 o D8, la cuestión es sencilla usar pressflow. La cuestión es que ellos usan el bloque Who's online para saber cuantos visitantes tienen en cada momento, y no querían perder esa funcionalidad, así que el resto estaba servidor.

Una de las curiosidades que tiene Drupal 6 es que si activas la cache normal los usuarios anónimos siguen generando entradas en la tabla de sesiones, Drupal 6 tira de cache como tal, pero levanta una sesión por cada usuario anónimo y genera cache control: no-cache , con todo lo que esto significa a nivel de rendimiento para el servidor.

$ curl -I http://192.168.33.10/project/drupal-6.35/?q=node/1
HTTP/1.1 302 Found
Date: Sat, 11 Jul 2015 08:49:26 GMT
Server: Apache/2.2.22 (Ubuntu)
X-Powered-By: PHP/5.3.10-1ubuntu3.17
Location: http://192.168.33.10/project/drupal-6.35/install.php
Cache-Control: no-cache
Vary: Accept-Encoding
Content-Type: text/html

Por el contrario si hacemos esa misma petición a Pressflow vemos que la respuesta es muy diferente

$ curl -I http://devel.local/content/
HTTP/1.1 200 OK
Date: Sat, 11 Jul 2015 08:50:44 GMT
Server: Apache/2.2.22 (Ubuntu)
X-Powered-By: PHP/5.3.10-1ubuntu3.17
X-Drupal-Cache: HIT
Cache-Control: public, max-age=900
Last-Modified: Sat, 11 Jul 2015 07:29:06 +0000
Expires: Sun, 11 Mar 1984 12:00:00 GMT
Vary: Cookie,User-Agent,Accept-Encoding
X-PF-Uncompressing: 1
Content-Type: text/html; charset=utf-8

Una vez se ha activado la cache, Pressflow no genera sesiones para los usuarios anónimos, por lo que la funcionalidad del bloque Who's online no funciona correctamente.

Y es en este caso donde la analítica web viene en nuestra ayuda, Google Analytics y Piwik tienen ambos servicio de visitantes en tiempo real, por lo que la solución más óptima en este caso es usar este servicio para saber cuantos usuarios están visitando la web en ese momento.

Mi compañera de trabajo Mónica me ha enviado un pantallazo del servicio en tiempo real en el móvil.