Download Install Tutorial Docs FAQ Tools WikiLicense Team IRC Planet Involvement Shop Book

Changeset 1187

Show
Ignore:
Timestamp:
07/06/06 00:33:05
Author:
fumanchu
Message:

Fix for #538 (Caching must set Age response header). Also fixed a bad bug from using header_list instead of headers.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/cherrypy/lib/caching.py

    r1185 r1187  
    9999     
    100100    if c: 
    101         s, cherrypy.response.header_list, b = cacheData 
     101        response = cherrypy.response 
     102        s, response.headers, b, create_time = cacheData 
     103         
     104        # Add the required Age header 
     105        response.headers["Age"] = str(int(time.time() - create_time)) 
     106         
    102107        try: 
    103108            cptools.validate_since() 
     
    108113         
    109114        # serve it & get out from the request 
    110         cherrypy.response.status = s 
    111         cherrypy.response.body = b 
     115        response.status = s 
     116        response.body = b 
    112117    return c 
    113118 
     
    127132            # save the cache data 
    128133            body = ''.join([chunk for chunk in output]) 
    129             cherrypy._cache.put((response.status, response.header_list, body)) 
     134            create_time = time.time() 
     135            cherrypy._cache.put((response.status, response.headers or {}, 
     136                                 body, create_time)) 
    130137    response.body = tee(response.body) 
    131138 
  • trunk/cherrypy/test/test_caching.py

    r1127 r1187  
    3232     
    3333    def testCaching(self): 
     34        elapsed = 0.0 
    3435        for trial in xrange(10): 
    3536            self.getPage("/") 
    36             # The response should be the same every time! 
     37            # The response should be the same every time, 
     38            # except for the Age response header. 
    3739            self.assertBody('visit #1') 
     40            if trial != 0: 
     41                age = int(self.assertHeader("Age")) 
     42                self.assert_(age >= elapsed) 
     43                elapsed = age 
    3844         
    3945        # POST, PUT, DELETE should not be cached. 

Hosted by WebFaction

Log in as guest/cpguest to create tickets