- From: Henrik Frystyk Nielsen <frystyk@w3.org>
- Date: Mon, 25 Nov 1996 22:01:25 -0500
- To: Paul Hethmon <phethmon@utk.edu>, HTTP-WG <http-wg%cuckoo.hpl.hp.com@hplb.hpl.hp.com>
At 08:46 PM 11/25/96 EST, Paul Hethmon wrote: >I don't mean to bring this up for discusion, rather clarification. >In going through the mailing list archives and over draft 07, I >wanted to be sure I understood the calculations of the Age value >correctly. I have included how I implement it libwww 5.0a which is available from http://www.w3.org/pub/WWW/Library/ The function is part of the HTCache.c module. Hope this helps, Henrik ----------------------------------------------------------------- /* ** Calculate the corrected_initial_age of the object. We use the time ** when this function is called as the response_time as this is when ** we have received the complete response. This may cause a delay if ** the reponse header is very big but should not cause any incorrect ** behavior. */ PRIVATE BOOL calculate_time (HTCache * me, HTRequest * request, HTResponse * response) { if (me && request) { HTParentAnchor * anchor = HTRequest_anchor(request); time_t date = HTAnchor_date(anchor); me->response_time = time(NULL); me->expires = HTAnchor_expires(anchor); { time_t apparent_age = HTMAX(0, me->response_time - date); time_t corrected_received_age = HTMAX(apparent_age, HTAnchor_age(anchor)); time_t response_delay = me->response_time - HTRequest_date(request); me->corrected_initial_age = corrected_received_age + response_delay; } /* ** Estimate an expires time using the max-age and expires time. If we ** don't have an explicit expires time then set it to 10% of the LM ** date. If no LM date is available then use 24 hours. */ { time_t freshness_lifetime = HTResponse_maxAge(response); if (freshness_lifetime < 0) { if (me->expires < 0) { time_t lm = HTAnchor_lastModified(anchor); if (lm < 0) freshness_lifetime = 24*3600; /* 24 hours */ else freshness_lifetime = (date - lm) / 10; } else freshness_lifetime = me->expires - date; } me->freshness_lifetime = HTMAX(0, freshness_lifetime); } if (CACHE_TRACE) { HTTrace("Cache....... Received Age %d, corrected %d, freshness lifetime %d\n", HTAnchor_age(anchor), me->corrected_initial_age, me->freshness_lifetime); } return YES; } return NO; }
Received on Monday, 25 November 1996 19:06:07 UTC