[cpif] r294 - in trunk: . frontend-web
svn at argo.es
svn at argo.es
Fri Jul 27 02:45:01 CEST 2007
Author: jcea
Date: Fri Jul 27 02:45:00 2007
New Revision: 294
Log:
Afinamos un poco mas el sistema de cacheo de
objetos estaticos, dando soporte a "if-modified-since".
La forma actual de hacerlo es "cutrilla", pero es mejor
que nada, si bien, todos los objetos estaticos tienen ETags,
y es lo que deberian usar los navegadores para realizar
la verificacion.
Modified:
trunk/TODO
trunk/frontend-web/url_static.py
Modified: trunk/TODO
==============================================================================
--- trunk/TODO (original)
+++ trunk/TODO Fri Jul 27 02:45:00 2007
@@ -307,3 +307,9 @@
- 20070726: FRONTAL WEB: En algun momento hay que hacer limpieza
en el storage de los "CSS" y los "JS" huerfanos.
+- 20070727: FRONTAL WEB: En "static", si el cliente web nos manda
+ una cabecera "If-Modified-Since", la estamos comparando como cadena
+ con el "last modified" del objeto. Deberiamos parsear la cabecera
+ y comprobar que es semanticamente equivalente, no comparar como
+ simples cadenas.
+
Modified: trunk/frontend-web/url_static.py
==============================================================================
--- trunk/frontend-web/url_static.py (original)
+++ trunk/frontend-web/url_static.py Fri Jul 27 02:45:00 2007
@@ -15,7 +15,8 @@
metadata,data=data
data=data[0] # de-encapsulate
- headers["Last-Modified"]=metadata["last modified"]
+ last_modified=metadata["last modified"]
+ headers["Last-Modified"]=last_modified
if_none_match=handler.headers.get("if-none-match")
if if_none_match :
@@ -23,7 +24,10 @@
if etag==i.strip() :
return (304,headers,"")
- headers["ETag"]=etag
+ if_modified_since=handler.headers.get("if-modified-since")
+ if if_modified_since==last_modified : # TODO: Actually parse the header, do not do a simple string comparison
+ return (304,headers,"")
+
headers["Content-Type"]=metadata["content-type"]
return (200,headers,data)
More information about the cpif
mailing list