From 61ff10065b579fa38182fcf10cc7e63839acd53c Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Tue, 28 May 2013 16:33:30 +0200 Subject: cache: document negative ttls and add about ttl We've long supported negative ttls, for infinite cache, except the documentation incorrectly showed one of our defaults as being 5 and not -1. As well, with a negative ttl, we were actually making the HTTP expired header go backwards. This changes it to go ahead ten years instead. Further, we add an cache-about-ttl option to set a different ttl for about pages, which are now increasingly being filtered through markdown or just sent statically anyway. Signed-off-by: Jason A. Donenfeld --- cgit.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'cgit.c') diff --git a/cgit.c b/cgit.c index 950b878..a45ce1f 100644 --- a/cgit.c +++ b/cgit.c @@ -211,6 +211,8 @@ static void config_cb(const char *name, const char *value) ctx.cfg.cache_static_ttl = atoi(value); else if (!strcmp(name, "cache-dynamic-ttl")) ctx.cfg.cache_dynamic_ttl = atoi(value); + else if (!strcmp(name, "cache-about-ttl")) + ctx.cfg.cache_about_ttl = atoi(value); else if (!strcmp(name, "case-sensitive-sort")) ctx.cfg.case_sensitive_sort = atoi(value); else if (!strcmp(name, "about-filter")) @@ -351,12 +353,13 @@ static void prepare_context(struct cgit_context *ctx) ctx->cfg.agefile = "info/web/last-modified"; ctx->cfg.nocache = 0; ctx->cfg.cache_size = 0; - ctx->cfg.cache_dynamic_ttl = 5; ctx->cfg.cache_max_create_time = 5; - ctx->cfg.cache_repo_ttl = 5; ctx->cfg.cache_root = CGIT_CACHE_ROOT; + ctx->cfg.cache_about_ttl = 15; + ctx->cfg.cache_repo_ttl = 5; ctx->cfg.cache_root_ttl = 5; ctx->cfg.cache_scanrc_ttl = 15; + ctx->cfg.cache_dynamic_ttl = 5; ctx->cfg.cache_static_ttl = -1; ctx->cfg.case_sensitive_sort = 1; ctx->cfg.branch_sort = 0; @@ -922,6 +925,9 @@ static int calc_ttl() if (!ctx.qry.page) return ctx.cfg.cache_repo_ttl; + if (!strcmp(ctx.qry.page, "about")) + return ctx.cfg.cache_about_ttl; + if (ctx.qry.has_symref) return ctx.cfg.cache_dynamic_ttl; @@ -973,7 +979,10 @@ int main(int argc, const char **argv) } ttl = calc_ttl(); - ctx.page.expires += ttl * 60; + if (ttl < 0) + ctx.page.expires += 10 * 365 * 24 * 60 * 60; /* 10 years */ + else + ctx.page.expires += ttl * 60; if (ctx.env.request_method && !strcmp(ctx.env.request_method, "HEAD")) ctx.cfg.nocache = 1; if (ctx.cfg.nocache) -- cgit v1.2.1