about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorLukas Fleischer2014-02-05 10:23:58 +0100
committerJason A. Donenfeld2014-02-20 19:56:44 +0100
commita3722ec3c6660ace9fe637d617a0ca225acfacbc (patch)
treee6d78586143a377aeaa77508dae34cb5210b0c9f
parentdiffstat: do not rely on uninitialized data (diff)
downloadcgit-a3722ec3c6660ace9fe637d617a0ca225acfacbc.tar.gz
cgit-a3722ec3c6660ace9fe637d617a0ca225acfacbc.zip
Add a cache-snapshot-ttl configuration variable
This can be used to specify the TTL for snapshots. Snapshots are usually
static and do not ever change. On the other hand, tarball generation is
CPU intensive.

One use case of this setting (apart from increasing the lifetime of
snapshot cache slots) is caching of snapshots while disabling the cache
for static/dynamic HTML pages (by setting TTL to zero for everything
except for snapshot requests).

Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
-rw-r--r--cgit.c6
-rw-r--r--cgit.h1
-rw-r--r--cgitrc.5.txt5
3 files changed, 12 insertions, 0 deletions
diff --git a/cgit.c b/cgit.c index 36251e7..f488ebf 100644 --- a/cgit.c +++ b/cgit.c
@@ -184,6 +184,8 @@ static void config_cb(const char *name, const char *value)
184 ctx.cfg.cache_dynamic_ttl = atoi(value); 184 ctx.cfg.cache_dynamic_ttl = atoi(value);
185 else if (!strcmp(name, "cache-about-ttl")) 185 else if (!strcmp(name, "cache-about-ttl"))
186 ctx.cfg.cache_about_ttl = atoi(value); 186 ctx.cfg.cache_about_ttl = atoi(value);
187 else if (!strcmp(name, "cache-snapshot-ttl"))
188 ctx.cfg.cache_snapshot_ttl = atoi(value);
187 else if (!strcmp(name, "case-sensitive-sort")) 189 else if (!strcmp(name, "case-sensitive-sort"))
188 ctx.cfg.case_sensitive_sort = atoi(value); 190 ctx.cfg.case_sensitive_sort = atoi(value);
189 else if (!strcmp(name, "about-filter")) 191 else if (!strcmp(name, "about-filter"))
@@ -331,6 +333,7 @@ static void prepare_context(void)
331 ctx.cfg.cache_max_create_time = 5; 333 ctx.cfg.cache_max_create_time = 5;
332 ctx.cfg.cache_root = CGIT_CACHE_ROOT; 334 ctx.cfg.cache_root = CGIT_CACHE_ROOT;
333 ctx.cfg.cache_about_ttl = 15; 335 ctx.cfg.cache_about_ttl = 15;
336 ctx.cfg.cache_snapshot_ttl = 5;
334 ctx.cfg.cache_repo_ttl = 5; 337 ctx.cfg.cache_repo_ttl = 5;
335 ctx.cfg.cache_root_ttl = 5; 338 ctx.cfg.cache_root_ttl = 5;
336 ctx.cfg.cache_scanrc_ttl = 15; 339 ctx.cfg.cache_scanrc_ttl = 15;
@@ -995,6 +998,9 @@ static int calc_ttl()
995 if (!strcmp(ctx.qry.page, "about")) 998 if (!strcmp(ctx.qry.page, "about"))
996 return ctx.cfg.cache_about_ttl; 999 return ctx.cfg.cache_about_ttl;
997 1000
1001 if (!strcmp(ctx.qry.page, "snapshot"))
1002 return ctx.cfg.cache_snapshot_ttl;
1003
998 if (ctx.qry.has_sha1) 1004 if (ctx.qry.has_sha1)
999 return ctx.cfg.cache_static_ttl; 1005 return ctx.cfg.cache_static_ttl;
1000 1006
diff --git a/cgit.h b/cgit.h index 496d0f6..0badc64 100644 --- a/cgit.h +++ b/cgit.h
@@ -210,6 +210,7 @@ struct cgit_config {
210 int cache_scanrc_ttl; 210 int cache_scanrc_ttl;
211 int cache_static_ttl; 211 int cache_static_ttl;
212 int cache_about_ttl; 212 int cache_about_ttl;
213 int cache_snapshot_ttl;
213 int case_sensitive_sort; 214 int case_sensitive_sort;
214 int embedded; 215 int embedded;
215 int enable_filter_overrides; 216 int enable_filter_overrides;
diff --git a/cgitrc.5.txt b/cgitrc.5.txt index 8eafc4a..a437fc4 100644 --- a/cgitrc.5.txt +++ b/cgitrc.5.txt
@@ -88,6 +88,11 @@ cache-about-ttl::
88 version of the repository about page. Negative values have infinite 88 version of the repository about page. Negative values have infinite
89 ttl. Default value: "15". 89 ttl. Default value: "15".
90 90
91cache-snapshot-ttl::
92 Number which specifies the time-to-live, in minutes, for the cached
93 version of snapshots. Negative values have infinite ttl. Default
94 value: "5".
95
91cache-size:: 96cache-size::
92 The maximum number of entries in the cgit cache. Default value: "0" 97 The maximum number of entries in the cgit cache. Default value: "0"
93 (i.e. caching is disabled). 98 (i.e. caching is disabled).