all repos — cgit @ 61ff10065b579fa38182fcf10cc7e63839acd53c

a hyperfast web frontend for git written in c

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 <Jason@zx2c4.com>
Jason A. Donenfeld Jason@zx2c4.com
Tue, 28 May 2013 16:33:30 +0200
commit

61ff10065b579fa38182fcf10cc7e63839acd53c

parent

23debef62104c70600be2b745ec3957538eeac6e

3 files changed, 31 insertions(+), 13 deletions(-)

jump to
M cgit.ccgit.c

@@ -211,6 +211,8 @@ else if (!strcmp(name, "cache-static-ttl"))

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 @@ memset(ctx, 0, sizeof(*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_root = CGIT_CACHE_ROOT; + ctx->cfg.cache_about_ttl = 15; ctx->cfg.cache_repo_ttl = 5; - ctx->cfg.cache_root = CGIT_CACHE_ROOT; 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 @@

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 @@ cgit_parse_url(ctx.qry.url);

} 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)
M cgit.hcgit.h

@@ -200,6 +200,7 @@ int cache_repo_ttl;

int cache_root_ttl; int cache_scanrc_ttl; int cache_static_ttl; + int cache_about_ttl; int case_sensitive_sort; int embedded; int enable_filter_overrides;
M cgitrc.5.txtcgitrc.5.txt

@@ -50,31 +50,39 @@ cache-root::

Path used to store the cgit cache entries. Default value: "/var/cache/cgit". See also: "MACRO EXPANSION". +cache-static-ttl:: + Number which specifies the time-to-live, in minutes, for the cached + version of repository pages accessed with a fixed SHA1. Negative + values have infinite ttl. Default value: -1". + cache-dynamic-ttl:: Number which specifies the time-to-live, in minutes, for the cached - version of repository pages accessed without a fixed SHA1. Default - value: "5". + version of repository pages accessed without a fixed SHA1. Negative + values have infinite ttl. Default value: "5". cache-repo-ttl:: Number which specifies the time-to-live, in minutes, for the cached - version of the repository summary page. Default value: "5". + version of the repository summary page. Negative values have infinite + ttl. Default value: "5". cache-root-ttl:: Number which specifies the time-to-live, in minutes, for the cached - version of the repository index page. Default value: "5". + version of the repository index page. Negative values have infinite + ttl. Default value: "5". cache-scanrc-ttl:: Number which specifies the time-to-live, in minutes, for the result - of scanning a path for git repositories. Default value: "15". + of scanning a path for git repositories. Negative values have infinite + ttl. Default value: "15". + +cache-about-ttl:: + Number which specifies the time-to-live, in minutes, for the cached + version of the repository about page. Negative values have infinite + ttl. Default value: "15". cache-size:: The maximum number of entries in the cgit cache. Default value: "0" (i.e. caching is disabled). - -cache-static-ttl:: - Number which specifies the time-to-live, in minutes, for the cached - version of repository pages accessed with a fixed SHA1. Default value: - "5". case-sensitive-sort:: Sort items in the repo list case sensitively. Default value: "1".