summaryrefslogtreecommitdiff
path: root/cache.h (follow)
Commit message (Collapse)AuthorAgeFilesLines
* cache.h: export hash_str()Lars Hjemli2009-08-241-0/+2
| | | | | | This function will be reused to cache the result of tree scanning. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add page 'ls_cache'Lars Hjemli2008-04-281-0/+3
| | | | | | | | This new page will list all entries found in the current cache, which is useful when reviewing the new cache implementation. There are no links to the new page, but it's reachable by adding 'p=ls_cache' to any cgit url. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Redesign the caching layerLars Hjemli2008-04-281-12/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The original caching layer in cgit has no upper bound on the number of concurrent cache entries, so when cgit is traversed by a spider (like the googlebot), the cache might end up filling your disk. Also, if any error occurs in the cache layer, no content is returned to the client. This patch redesigns the caching layer to avoid these flaws by * giving the cache a bound number of slots * disabling the cache for the current request when errors occur The cache size limit is implemented by hashing the querystring (the cache lookup key) and generating a cache filename based on this hash modulo the cache size. In order to detect hash collisions, the full lookup key (i.e. the querystring) is stored in the cache file (separated from its associated content by ascii 0). The cache filename is the reversed 8-digit hexadecimal representation of hash(key) % cache_size which should make the filesystem lookup pretty fast (if directory content is indexed/sorted); reversing the representation avoids the problem where all keys have equal prefix. There is a new config option, cache-size, which sets the upper bound for the cache. Default value for this option is 0, which has the same effect as setting nocache=1 (hence nocache is now deprecated). Included in this patch is also a new testfile which verifies that the new option works as intended. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add cache.hLars Hjemli2008-03-271-0/+23
The functions found in cache.c are only used by cgit.c, so there's no point in rebuilding all object files when the cache interface is changed. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
ns'>+10 2013-04-08Maŕk cgit_environment members constLukas Fleischer2-12/+12 2013-04-08Return const char * in cgit_{httpscheme, hosturl, rooturl}()Lukas Fleischer3-9/+9 2013-04-08Update git to v1.8.2.1John Keeping4-5/+6 2013-04-07ui-blob: don't segfault when no path is givenJohn Keeping1-1/+1 2013-03-20Convert pager navigation into a unordered listLukas Fleischer3-9/+20 2013-03-20Makefile: remove CGIT-CFLAGS files in clean stageJason A. Donenfeld1-1/+1 2013-03-20ui-summary.c: Move urls variable into print_urls()Lukas Fleischer1-6/+14 2013-03-20Fix colspan valuesLukas Fleischer3-14/+28 2013-03-20html: check return value of writeJason A. Donenfeld1-2/+3 2013-03-20ui-shared: squelch compiler warning.Jason A. Donenfeld1-0/+1 2013-03-20cgit.mk: Use SHELL_PATH_SQ to run gen-version.shJohn Keeping1-1/+1 2013-03-20cgit.mk: don't rebuild everything if CGIT_VERSION changesJohn Keeping1-1/+8 2013-03-20ui-patch: use cgit_version not CGIT_VERSIONJohn Keeping1-1/+1 2013-03-20Makefile: re-use Git's Makefile where possibleJohn Keeping3-119/+80