cgit

commit a3722ec3c6660ace9fe637d617a0ca225acfacbc

Author: Lukas Fleischer <cgit@cryptocrack.de>

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>

 cgit.c | 6 ++++++
 cgit.h | 1 +
 cgitrc.5.txt | 5 +++++


diff --git a/cgit.c b/cgit.c
index 36251e7280b7f3ed651b4442eceeaa1b07939cb8..f488ebfa8cefbe8e9ca041c2bf6bee79cd891e92 100644
--- a/cgit.c
+++ b/cgit.c
@@ -184,6 +184,8 @@ 	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, "cache-snapshot-ttl"))
+		ctx.cfg.cache_snapshot_ttl = atoi(value);
 	else if (!strcmp(name, "case-sensitive-sort"))
 		ctx.cfg.case_sensitive_sort = atoi(value);
 	else if (!strcmp(name, "about-filter"))
@@ -331,6 +333,7 @@ 	ctx.cfg.cache_size = 0;
 	ctx.cfg.cache_max_create_time = 5;
 	ctx.cfg.cache_root = CGIT_CACHE_ROOT;
 	ctx.cfg.cache_about_ttl = 15;
+	ctx.cfg.cache_snapshot_ttl = 5;
 	ctx.cfg.cache_repo_ttl = 5;
 	ctx.cfg.cache_root_ttl = 5;
 	ctx.cfg.cache_scanrc_ttl = 15;
@@ -994,6 +997,9 @@ 		return ctx.cfg.cache_repo_ttl;
 
 	if (!strcmp(ctx.qry.page, "about"))
 		return ctx.cfg.cache_about_ttl;
+
+	if (!strcmp(ctx.qry.page, "snapshot"))
+		return ctx.cfg.cache_snapshot_ttl;
 
 	if (ctx.qry.has_sha1)
 		return ctx.cfg.cache_static_ttl;




diff --git a/cgit.h b/cgit.h
index 496d0f685075f66865d7c4d12d3ccd155e7b68dc..0badc642ec65c9b4166afe8952cd04b4322fa3c3 100644
--- a/cgit.h
+++ b/cgit.h
@@ -210,6 +210,7 @@ 	int cache_root_ttl;
 	int cache_scanrc_ttl;
 	int cache_static_ttl;
 	int cache_about_ttl;
+	int cache_snapshot_ttl;
 	int case_sensitive_sort;
 	int embedded;
 	int enable_filter_overrides;




diff --git a/cgitrc.5.txt b/cgitrc.5.txt
index 8eafc4a8ff4ff031d5b792236253b59ce013c890..a437fc4116c1217b2c38ab882d4d2172346c06c7 100644
--- a/cgitrc.5.txt
+++ b/cgitrc.5.txt
@@ -88,6 +88,11 @@ 	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-snapshot-ttl::
+	Number which specifies the time-to-live, in minutes, for the cached
+	version of snapshots. Negative values have infinite ttl. Default
+	value: "5".
+
 cache-size::
 	The maximum number of entries in the cgit cache. Default value: "0"
 	(i.e. caching is disabled).