On Wed, 06 Jun 2007 07:34:49 +0200 Stefan Borchert <stefan@borchert.cc> wrote:
Steven Jones schrieb:
Because "Minimum cache lifetime" keeps things in the cache for longer, Errm, no. <quote from admin/settings/performance> "The minimum cache lifetime is the minimum amount of time that will go by before the cache is emptied and recreated." </quote> If you set it to "10 min" the cache is cleared every ten minutes (on the next page request).
That is not correct. The minimum cache lifetime enforces exactly what the name says: a minimum cache lifetime. It simply ensures that the cache will not be flushed more frequently than the configured value. It does not enforce a maximum cache lifetime. Setting the minimum cache lifetime to 10 minutes does not cause the cache to be flushed every 10 minutes -- it means that there is a 10 minute delay between when Drupal requests that the cache be flushed and when it is actually flushed. (The idea being that if the cache is flushed each time a comment is posted, on a busy site like drupal.org this can lead to the cache being flushed too often to actually be used in serving pages to anonymous users.) ----- Digression about the current implementation, and how it could be easily improved: ----- I think the current implementation is not quite right. Currently it works as follows: Using your example of a minimum cache lifetime of "10 min": 1) the cache is flushed at 01:00:00 2) another cache flush event is requested at 01:01:14 (for example, a comment is posted) 3) the cache is not actually flushed until 01:11:14, ten minutes after the second cache flush request. That is, the current logic simply ads a delay between when the cache flush request was made, and when it is actually executed. It seems instead it would be better to track the last time the cache wash flushed, and simply be sure that the minimum cache lifetime has passed before flushing again. In that case, it would work as follows: 1) the cache is flushed at 01:00:00 2) another cache flush event is requested at 01:01:14 (for example, a comment is posted) 3) the cache is not actually flushed until 01:10:00, ten minutes after the last time the cache was flushed. (In a more exaggerated example to illustrate why I think the current implementation is wrong: 1) the cache is flushed at 01:00:00 2) another cache flush event is requested at 02:45:10 3) the cache is not actually flushed until 02:55:10 -- this added 10 minute delay is silly at this point as the cache already lived 2 hours and 45 minutes. It should instead be immediately flushed at that point.) Cheers, -Jeremy