mirror of
https://git.zx2c4.com/cgit
synced 2024-11-22 00:18:41 +00:00
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>
This commit is contained in:
parent
23debef621
commit
61ff10065b
15
cgit.c
15
cgit.c
@ -211,6 +211,8 @@ static void config_cb(const char *name, const char *value)
|
|||||||
ctx.cfg.cache_static_ttl = atoi(value);
|
ctx.cfg.cache_static_ttl = atoi(value);
|
||||||
else if (!strcmp(name, "cache-dynamic-ttl"))
|
else if (!strcmp(name, "cache-dynamic-ttl"))
|
||||||
ctx.cfg.cache_dynamic_ttl = atoi(value);
|
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"))
|
else if (!strcmp(name, "case-sensitive-sort"))
|
||||||
ctx.cfg.case_sensitive_sort = atoi(value);
|
ctx.cfg.case_sensitive_sort = atoi(value);
|
||||||
else if (!strcmp(name, "about-filter"))
|
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.agefile = "info/web/last-modified";
|
||||||
ctx->cfg.nocache = 0;
|
ctx->cfg.nocache = 0;
|
||||||
ctx->cfg.cache_size = 0;
|
ctx->cfg.cache_size = 0;
|
||||||
ctx->cfg.cache_dynamic_ttl = 5;
|
|
||||||
ctx->cfg.cache_max_create_time = 5;
|
ctx->cfg.cache_max_create_time = 5;
|
||||||
ctx->cfg.cache_repo_ttl = 5;
|
|
||||||
ctx->cfg.cache_root = CGIT_CACHE_ROOT;
|
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_root_ttl = 5;
|
||||||
ctx->cfg.cache_scanrc_ttl = 15;
|
ctx->cfg.cache_scanrc_ttl = 15;
|
||||||
|
ctx->cfg.cache_dynamic_ttl = 5;
|
||||||
ctx->cfg.cache_static_ttl = -1;
|
ctx->cfg.cache_static_ttl = -1;
|
||||||
ctx->cfg.case_sensitive_sort = 1;
|
ctx->cfg.case_sensitive_sort = 1;
|
||||||
ctx->cfg.branch_sort = 0;
|
ctx->cfg.branch_sort = 0;
|
||||||
@ -922,6 +925,9 @@ static int calc_ttl()
|
|||||||
if (!ctx.qry.page)
|
if (!ctx.qry.page)
|
||||||
return ctx.cfg.cache_repo_ttl;
|
return ctx.cfg.cache_repo_ttl;
|
||||||
|
|
||||||
|
if (!strcmp(ctx.qry.page, "about"))
|
||||||
|
return ctx.cfg.cache_about_ttl;
|
||||||
|
|
||||||
if (ctx.qry.has_symref)
|
if (ctx.qry.has_symref)
|
||||||
return ctx.cfg.cache_dynamic_ttl;
|
return ctx.cfg.cache_dynamic_ttl;
|
||||||
|
|
||||||
@ -973,7 +979,10 @@ int main(int argc, const char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ttl = calc_ttl();
|
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"))
|
if (ctx.env.request_method && !strcmp(ctx.env.request_method, "HEAD"))
|
||||||
ctx.cfg.nocache = 1;
|
ctx.cfg.nocache = 1;
|
||||||
if (ctx.cfg.nocache)
|
if (ctx.cfg.nocache)
|
||||||
|
1
cgit.h
1
cgit.h
@ -200,6 +200,7 @@ struct cgit_config {
|
|||||||
int cache_root_ttl;
|
int cache_root_ttl;
|
||||||
int cache_scanrc_ttl;
|
int cache_scanrc_ttl;
|
||||||
int cache_static_ttl;
|
int cache_static_ttl;
|
||||||
|
int cache_about_ttl;
|
||||||
int case_sensitive_sort;
|
int case_sensitive_sort;
|
||||||
int embedded;
|
int embedded;
|
||||||
int enable_filter_overrides;
|
int enable_filter_overrides;
|
||||||
|
28
cgitrc.5.txt
28
cgitrc.5.txt
@ -50,32 +50,40 @@ cache-root::
|
|||||||
Path used to store the cgit cache entries. Default value:
|
Path used to store the cgit cache entries. Default value:
|
||||||
"/var/cache/cgit". See also: "MACRO EXPANSION".
|
"/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::
|
cache-dynamic-ttl::
|
||||||
Number which specifies the time-to-live, in minutes, for the cached
|
Number which specifies the time-to-live, in minutes, for the cached
|
||||||
version of repository pages accessed without a fixed SHA1. Default
|
version of repository pages accessed without a fixed SHA1. Negative
|
||||||
value: "5".
|
values have infinite ttl. Default value: "5".
|
||||||
|
|
||||||
cache-repo-ttl::
|
cache-repo-ttl::
|
||||||
Number which specifies the time-to-live, in minutes, for the cached
|
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::
|
cache-root-ttl::
|
||||||
Number which specifies the time-to-live, in minutes, for the cached
|
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::
|
cache-scanrc-ttl::
|
||||||
Number which specifies the time-to-live, in minutes, for the result
|
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::
|
cache-size::
|
||||||
The maximum number of entries in the cgit cache. Default value: "0"
|
The maximum number of entries in the cgit cache. Default value: "0"
|
||||||
(i.e. caching is disabled).
|
(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::
|
case-sensitive-sort::
|
||||||
Sort items in the repo list case sensitively. Default value: "1".
|
Sort items in the repo list case sensitively. Default value: "1".
|
||||||
See also: repository-sort, section-sort.
|
See also: repository-sort, section-sort.
|
||||||
|
Loading…
Reference in New Issue
Block a user