[cpif] r219 - trunk/frontend-web
svn at argo.es
svn at argo.es
Sun Jul 1 03:20:19 CEST 2007
Author: jcea
Date: Sun Jul 1 03:20:16 2007
New Revision: 219
Log:
Enviamos "ETags" con la mayor parte de las paginas HTML
que servimos, y las usamos para validar las peticiones
que nos llegan. Si nos estan pidiendo una pagina que no
ha cambiado, enviamos un 304.
Es de notar que la pagina se sigue generando, y el ETag
es el MD5 de la pagina en si. Asi que no ahorramos
CPU, pero ahorramos mucho ancho de banda.
Modified:
trunk/frontend-web/skins.py
trunk/frontend-web/url_.py
trunk/frontend-web/url_hilo.py
trunk/frontend-web/url_indice.py
Modified: trunk/frontend-web/skins.py
==============================================================================
--- trunk/frontend-web/skins.py (original)
+++ trunk/frontend-web/skins.py Sun Jul 1 03:20:16 2007
@@ -67,8 +67,7 @@
print available_skins.keys()
class Skin:
-
- def __init__(self,url,user=None):
+ def __init__(self,url,user=None,headers={}) :
import pytz
self._tz = pytz.timezone("Europe/Madrid")
self._skin = "default"
@@ -77,6 +76,7 @@
self._style = ["odd","even"]
self._text = []
self._user = user
+ self._header_if_none_match=headers.get("if-none-match",None)
self._dict = {
"version": globales.version,
"page_title": "cpif",
@@ -235,4 +235,17 @@
return available_skins[self._skin]['footer'] % self._dict
def web(self,code=200):
- return code, {"Content-Type":"text/html; charset=utf-8"}, "\r\n".join([self._header(),self._body(),self._footer()])
+ headers={}
+ text="\r\n".join([self._header(),self._body(),self._footer()])
+ if code==200 :
+ import md5
+ etag='"%s"' %md5.new(text).hexdigest()
+ if_none_match=self._header_if_none_match
+ if if_none_match :
+ for i in if_none_match.split(",") :
+ if etag==i.strip() :
+ return (304,headers,"")
+ headers["ETag"]=etag
+ headers["Content-Type"]="text/html; charset=utf-8"
+ return (code, headers, text)
+
Modified: trunk/frontend-web/url_.py
==============================================================================
--- trunk/frontend-web/url_.py (original)
+++ trunk/frontend-web/url_.py Sun Jul 1 03:20:16 2007
@@ -10,7 +10,7 @@
database.actualiza_no_leidos(conn,usuario)
import skins
- pagina = skins.Skin(path,usuario)
+ pagina = skins.Skin(path,usuario,handler.headers)
d = {
"page_title": "cpif - listado de subforos",
Modified: trunk/frontend-web/url_hilo.py
==============================================================================
--- trunk/frontend-web/url_hilo.py (original)
+++ trunk/frontend-web/url_hilo.py Sun Jul 1 03:20:16 2007
@@ -30,7 +30,7 @@
assert len(metatags)==1 # De momento no permitimos multiples metatags para un hilo
metatag=metatags[0]
import skins
- pagina = skins.Skin(path,usuario)
+ pagina = skins.Skin(path,usuario,handler.headers)
d = {
"page_title":"cpif - %s" % meta["titulo"],
Modified: trunk/frontend-web/url_indice.py
==============================================================================
--- trunk/frontend-web/url_indice.py (original)
+++ trunk/frontend-web/url_indice.py Sun Jul 1 03:20:16 2007
@@ -48,7 +48,7 @@
ts=timegm(fecha_max)
import skins
- pagina = skins.Skin(path,usuario)
+ pagina = skins.Skin(path,usuario,handler.headers)
import calendario
d = {
"page_title": "cpif - listado de hilos",
More information about the cpif
mailing list