<feed xmlns='http://www.w3.org/2005/Atom'>
<title>cgit/cache.h, branch ch/git-2-54</title>
<subtitle>A hyperfast web frontend for git repositories written in C.</subtitle>
<id>https://git.zx2c4.com/cgit/atom/cache.h?h=ch%2Fgit-2-54</id>
<link rel='self' href='https://git.zx2c4.com/cgit/atom/cache.h?h=ch%2Fgit-2-54'/>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/cgit/'/>
<updated>2017-10-15T16:44:55Z</updated>
<entry>
<title>global: spelling fixes</title>
<updated>2017-10-15T16:44:55Z</updated>
<author>
<name>Ville Skyttä</name>
<email>ville.skytta@iki.fi</email>
</author>
<published>2017-10-14T19:05:51Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/cgit/commit/?id=67d0f870506e3bc3703ae3cb2cb00e19691ce967'/>
<id>urn:sha1:67d0f870506e3bc3703ae3cb2cb00e19691ce967</id>
<content type='text'>
Signed-off-by: Ville Skyttä &lt;ville.skytta@iki.fi&gt;
</content>
</entry>
<entry>
<title>Switch to exclusively using global ctx</title>
<updated>2014-01-16T23:44:54Z</updated>
<author>
<name>Lukas Fleischer</name>
<email>cgit@cryptocrack.de</email>
</author>
<published>2014-01-15T20:53:15Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/cgit/commit/?id=f60ffa143cca61e9729ac71033e1a556cf422871'/>
<id>urn:sha1:f60ffa143cca61e9729ac71033e1a556cf422871</id>
<content type='text'>
Drop the context parameter from the following functions (and all static
helpers used by them) and use the global context instead:

* cgit_print_http_headers()
* cgit_print_docstart()
* cgit_print_pageheader()

Remove context parameter from all commands

Drop the context parameter from the following functions (and all static
helpers used by them) and use the global context instead:

* cgit_get_cmd()
* All cgit command functions.
* cgit_clone_info()
* cgit_clone_objects()
* cgit_clone_head()
* cgit_print_plain()
* cgit_show_stats()

In initialization routines, use the global context variable instead of
passing a pointer around locally.

Remove callback data parameter for cache slots

This is no longer needed since the context is always read from the
global context variable.

Signed-off-by: Lukas Fleischer &lt;cgit@cryptocrack.de&gt;
</content>
</entry>
<entry>
<title>use __attribute__ to catch printf format mistakes</title>
<updated>2010-09-04T15:11:40Z</updated>
<author>
<name>Mark Lodato</name>
<email>lodatom@gmail.com</email>
</author>
<published>2010-09-04T15:09:57Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/cgit/commit/?id=a4c58d92bfee0cf2e35ab1c5e828a6d790108a69'/>
<id>urn:sha1:a4c58d92bfee0cf2e35ab1c5e828a6d790108a69</id>
<content type='text'>
Use "__attribute__((format (printf,N,M)))", as is done in git, do catch
mistakes in printf-style format strings.

Signed-off-by: Mark Lodato &lt;lodatom@gmail.com&gt;
</content>
</entry>
<entry>
<title>cache.h: export hash_str()</title>
<updated>2009-08-24T08:22:57Z</updated>
<author>
<name>Lars Hjemli</name>
<email>hjemli@gmail.com</email>
</author>
<published>2009-08-19T15:43:47Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/cgit/commit/?id=523a2161b9a21f5fa8526280bb914d7affb185b1'/>
<id>urn:sha1:523a2161b9a21f5fa8526280bb914d7affb185b1</id>
<content type='text'>
This function will be reused to cache the result of tree scanning.

Signed-off-by: Lars Hjemli &lt;hjemli@gmail.com&gt;
</content>
</entry>
<entry>
<title>Add page 'ls_cache'</title>
<updated>2008-04-28T10:10:13Z</updated>
<author>
<name>Lars Hjemli</name>
<email>hjemli@gmail.com</email>
</author>
<published>2008-04-28T10:10:13Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/cgit/commit/?id=9000bbf865cb3578ba5ed3810dc44253cb46ec7f'/>
<id>urn:sha1:9000bbf865cb3578ba5ed3810dc44253cb46ec7f</id>
<content type='text'>
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 &lt;hjemli@gmail.com&gt;
</content>
</entry>
<entry>
<title>Redesign the caching layer</title>
<updated>2008-04-28T09:32:42Z</updated>
<author>
<name>Lars Hjemli</name>
<email>hjemli@gmail.com</email>
</author>
<published>2008-04-28T09:32:42Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/cgit/commit/?id=939d32fda70ea66c9db51687beb3cea6da7b0599'/>
<id>urn:sha1:939d32fda70ea66c9db51687beb3cea6da7b0599</id>
<content type='text'>
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 &lt;hjemli@gmail.com&gt;
</content>
</entry>
<entry>
<title>Add cache.h</title>
<updated>2008-03-27T08:22:13Z</updated>
<author>
<name>Lars Hjemli</name>
<email>hjemli@gmail.com</email>
</author>
<published>2008-03-27T08:22:13Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/cgit/commit/?id=ee4056bd2c902a12dea67874368863fe60ea5a5f'/>
<id>urn:sha1:ee4056bd2c902a12dea67874368863fe60ea5a5f</id>
<content type='text'>
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 &lt;hjemli@gmail.com&gt;
</content>
</entry>
</feed>
