diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2013-05-28 23:33:30 (JST) |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2013-08-13 04:14:10 (JST) |
commit | 61ff10065b579fa38182fcf10cc7e63839acd53c (patch) | |
tree | 0d4b37af5a034c10763f7d0f1c39af55fabed115 /cgit.c | |
parent | 23debef62104c70600be2b745ec3957538eeac6e (diff) | |
download | cgit-61ff10065b579fa38182fcf10cc7e63839acd53c.zip cgit-61ff10065b579fa38182fcf10cc7e63839acd53c.tar.gz |
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>
Diffstat (limited to 'cgit.c')
-rw-r--r-- | cgit.c | 15 |
1 files changed, 12 insertions, 3 deletions
@@ -211,6 +211,8 @@ static void config_cb(const char *name, const char *value) | |||
211 | ctx.cfg.cache_static_ttl = atoi(value); | 211 | ctx.cfg.cache_static_ttl = atoi(value); |
212 | else if (!strcmp(name, "cache-dynamic-ttl")) | 212 | else if (!strcmp(name, "cache-dynamic-ttl")) |
213 | ctx.cfg.cache_dynamic_ttl = atoi(value); | 213 | ctx.cfg.cache_dynamic_ttl = atoi(value); |
214 | else if (!strcmp(name, "cache-about-ttl")) | ||
215 | ctx.cfg.cache_about_ttl = atoi(value); | ||
214 | else if (!strcmp(name, "case-sensitive-sort")) | 216 | else if (!strcmp(name, "case-sensitive-sort")) |
215 | ctx.cfg.case_sensitive_sort = atoi(value); | 217 | ctx.cfg.case_sensitive_sort = atoi(value); |
216 | else if (!strcmp(name, "about-filter")) | 218 | else if (!strcmp(name, "about-filter")) |
@@ -351,12 +353,13 @@ static void prepare_context(struct cgit_context *ctx) | |||
351 | ctx->cfg.agefile = "info/web/last-modified"; | 353 | ctx->cfg.agefile = "info/web/last-modified"; |
352 | ctx->cfg.nocache = 0; | 354 | ctx->cfg.nocache = 0; |
353 | ctx->cfg.cache_size = 0; | 355 | ctx->cfg.cache_size = 0; |
354 | ctx->cfg.cache_dynamic_ttl = 5; | ||
355 | ctx->cfg.cache_max_create_time = 5; | 356 | ctx->cfg.cache_max_create_time = 5; |
356 | ctx->cfg.cache_repo_ttl = 5; | ||
357 | ctx->cfg.cache_root = CGIT_CACHE_ROOT; | 357 | ctx->cfg.cache_root = CGIT_CACHE_ROOT; |
358 | ctx->cfg.cache_about_ttl = 15; | ||
359 | ctx->cfg.cache_repo_ttl = 5; | ||
358 | ctx->cfg.cache_root_ttl = 5; | 360 | ctx->cfg.cache_root_ttl = 5; |
359 | ctx->cfg.cache_scanrc_ttl = 15; | 361 | ctx->cfg.cache_scanrc_ttl = 15; |
362 | ctx->cfg.cache_dynamic_ttl = 5; | ||
360 | ctx->cfg.cache_static_ttl = -1; | 363 | ctx->cfg.cache_static_ttl = -1; |
361 | ctx->cfg.case_sensitive_sort = 1; | 364 | ctx->cfg.case_sensitive_sort = 1; |
362 | ctx->cfg.branch_sort = 0; | 365 | ctx->cfg.branch_sort = 0; |
@@ -922,6 +925,9 @@ static int calc_ttl() | |||
922 | if (!ctx.qry.page) | 925 | if (!ctx.qry.page) |
923 | return ctx.cfg.cache_repo_ttl; | 926 | return ctx.cfg.cache_repo_ttl; |
924 | 927 | ||
928 | if (!strcmp(ctx.qry.page, "about")) | ||
929 | return ctx.cfg.cache_about_ttl; | ||
930 | |||
925 | if (ctx.qry.has_symref) | 931 | if (ctx.qry.has_symref) |
926 | return ctx.cfg.cache_dynamic_ttl; | 932 | return ctx.cfg.cache_dynamic_ttl; |
927 | 933 | ||
@@ -973,7 +979,10 @@ int main(int argc, const char **argv) | |||
973 | } | 979 | } |
974 | 980 | ||
975 | ttl = calc_ttl(); | 981 | ttl = calc_ttl(); |
976 | ctx.page.expires += ttl * 60; | 982 | if (ttl < 0) |
983 | ctx.page.expires += 10 * 365 * 24 * 60 * 60; /* 10 years */ | ||
984 | else | ||
985 | ctx.page.expires += ttl * 60; | ||
977 | if (ctx.env.request_method && !strcmp(ctx.env.request_method, "HEAD")) | 986 | if (ctx.env.request_method && !strcmp(ctx.env.request_method, "HEAD")) |
978 | ctx.cfg.nocache = 1; | 987 | ctx.cfg.nocache = 1; |
979 | if (ctx.cfg.nocache) | 988 | if (ctx.cfg.nocache) |