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>
ctx.cfg.cache_static_ttl = atoi(value);
else if (!strcmp(name, "cache-dynamic-ttl"))
ctx.cfg.cache_dynamic_ttl = atoi(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"))
else if (!strcmp(name, "case-sensitive-sort"))
ctx.cfg.case_sensitive_sort = atoi(value);
else if (!strcmp(name, "about-filter"))
ctx->cfg.agefile = "info/web/last-modified";
ctx->cfg.nocache = 0;
ctx->cfg.cache_size = 0;
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_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_scanrc_ttl = 15;
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;
ctx->cfg.cache_static_ttl = -1;
ctx->cfg.case_sensitive_sort = 1;
ctx->cfg.branch_sort = 0;
if (!ctx.qry.page)
return ctx.cfg.cache_repo_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;
if (ctx.qry.has_symref)
return ctx.cfg.cache_dynamic_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)
if (ctx.env.request_method && !strcmp(ctx.env.request_method, "HEAD"))
ctx.cfg.nocache = 1;
if (ctx.cfg.nocache)
int cache_root_ttl;
int cache_scanrc_ttl;
int cache_static_ttl;
int cache_root_ttl;
int cache_scanrc_ttl;
int cache_static_ttl;
int case_sensitive_sort;
int embedded;
int enable_filter_overrides;
int case_sensitive_sort;
int embedded;
int enable_filter_overrides;
Path used to store the cgit cache entries. Default value:
"/var/cache/cgit". See also: "MACRO EXPANSION".
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
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
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
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
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-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".
See also: repository-sort, section-sort.
case-sensitive-sort::
Sort items in the repo list case sensitively. Default value: "1".
See also: repository-sort, section-sort.