nginx memcached HTTP 304 patch

[english]When using nginx with memcached, all requests served off memcached have a 200 HTTP return code, as memcached doesn’t store the page timestamp (last-modified).

This patch has two parts:

  • a memcached patch that stores the current epoch on the flags field when storing a new key-value pair. IMPORTANT: whatever flags the client tries to set get lost, as the server overwrites them with the current timestamp!
  • a nginx patch to properly set the “last-modified” HTTP header according to the memcached-stored flags (timestamp), and return a 304 depending on the client’s “if-modified-since” header.

The patches have been tested with nginx 0.7.62 and memcached 1.2.2.

The latest release can be downloaded here: nginx-memcached-304-latest.tar.bz2[/english]

[spanish]Al usar nginx con memcached, todas las páginas que se sirven desde memcached devuelven un código HTTP 200, ya que memcached no almacena la fecha de modificación (last-modified) de cada fichero.

Este parche tiene dos partes:

  • un parche para memcached que almacena la fecha en formato epoch en el campo flags cada vez que se guarda un par clave-valor. IMPORTANTE: cualquier flag que intente configurar el cliente se perderá, ya que el servidor lo sobrescribe con la fecha!
  • un parche para nginx que devuelve la cabecera HTTP “last-modified” según el campo flags de memcached (la fecha del fichero), y devuelve 304 en función de la cabecera “if-modified-since” del cliente.

Ambos parches se han probado con nginx 0.7.62 y memcached 1.2.2.

La última versión está disponible aquí: nginx-memcached-304-latest.tar.bz2[/spanish]

Deja un comentario