Пример #1
0
    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
Пример #2
0
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
Пример #3
0
    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
Пример #4
0
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