Update documentation with caching
@@ -79,3 +79,47 @@
If you want to edit the text header that appears above the project list on the
home page, edit templates/hometext.tpl.
+To turn on caching, set the 'cache' config item to true. Gitphp will cache
+every page's output, including plaintext output and binary output such as
+blobs and snapshots, for the number of seconds specified in the
+'cachelifetime' config key.
+The 'cacheexpire' key is recommended for most users. With this option on,
+gitphp will attempt to keep the cache in sync by automatically expiring any
+cached pages that are older than the most recent commit, on any branch.
+It is a slight performance hit to make this check, but the performance hit
+is tiny compared to the gain you get from turning on caching. It will
+avoid situations where users are getting a cached version of a page that
+isn't up to date and doesn't reflect the most recent commit, or worse,
+pages that have been cached at different times and show data from both
+before and after a commit (eg page 1 of the shortlog shows the most recent
+commit but page 1 of the log was cached a while ago and doesn't show the
+most recent commit).
+However, if your project is so active that commits are constantly coming in
+and invalidating the cache, rendering it useless, it would be better to
+turn cache expiration off and just set a really short cache lifetime of
+a few seconds. In other words:
+* Set 'cacheexpire' to TRUE
+* Set 'cachelifetime' high, 3600 seconds (1 hour) or more. -1 means
+ cache forever
+Extremely active projects, with commits every few seconds, or advanced
+users that know exactly how often commits come in and want to save
+the performance of the expiration check:
+* Set 'cacheexpire' to FALSE
+* Set 'cachelifetime' low, between 5-10 seconds.
+If you ever run into problems with your cache not syncing correctly, or
+showing out of date information, you can use the 'expire' action to force
+expiration of all cache. This action is not linked anywhere because it
+is not supposed to be run by users, it's more of an administrative function.
+To use it, you want to set a=expire. So, for example, you would visit this
+address in a browser (obviously with the correct path to your gitphp
@@ -202,7 +202,7 @@
* relatively high - 3600 seconds (1 hour) or even longer.
* -1 means no timeout.
* If you have turned cacheexpire off because of too many
- * cache expirations, set this low, like 3-5 seconds.
+ * cache expirations, set this low (5-10 seconds).
$gitphp_conf['cachelifetime'] = 3600;