def __call__(self, environ, start_response): etag_match = environ["headers"].get("If-None-Match", default=None) now = time.time() expire_time = now + self._expires headers = [ ("Cache-Control", "max-age=%d" % (self._expires)), ("Date", format_date(now)), ("Expires", format_date(expire_time)), ("Last-Modified", format_date(self._last_modified)), ("ETag", self._etag) ] if self._etag == etag_match: start_response("304 Not Modified", headers) return "" modified = os.stat(self._path).st_mtime if not self._use_cache or self._cache is None or \ modified > self._last_modified: self._last_modified = modified with open(self._path, "r") as fp: self._cache = fp.read() self._etag = self._generate_etag() headers.append(("Content-type", self._mimetype)) start_response("200 OK", headers) return self._cache
def cache(request, expires=30, public=True): #set expires header expiry = (date.today() + timedelta(expires)).timetuple() request.setHeader("expires" , format_date(mktime(expiry))) cache_control = "max-age=" + str(60*60*24*expires) if public: cache_control += ", public" else: cache_control += ", private" request.setHeader("cache-control", cache_control) return request
def cache(self, request, expires=30, public=True): #set expires header from wsgiref.handlers import format_date_time as format_date from datetime import date, timedelta from time import mktime expiry = (date.today() + timedelta(expires)).timetuple() request.setHeader("expires" , format_date(mktime(expiry))) cache_control = "max-age=" + str(60*60*24*expires) if public: cache_control += ", public" else: cache_control += ", private" request.setHeader("cache-control", cache_control) return request
def cache(request, expires=None, public=True): ''' Sets the cache headers for a (static resource) request ''' if expires is None: expires = int(config.tuneback["http_cache_period"]) if expires == 0: return request #set expires header expiry = (date.today() + timedelta(expires)).timetuple() request.responseHeaders.setRawHeaders("expires", [format_date(mktime(expiry))]) #set cache control cache_control = "max-age=" + str(int(60 * 60 * 24 * expires)) if public: cache_control += ", public" else: cache_control += ", private" request.responseHeaders.setRawHeaders("cache-control", [cache_control]) return request