Subject: Re: gitweb: Simple file based output caching TODO

From: Jakub Narebski <[email-masked]>
Date: Sun, 28 Feb 2010 12:51:23 +0100

> Here is the list of things that needs to be addressed in the future 
> next (v4) version of this series, hopefully finally not an RFC.
> 
> * The caching engine (GitwebCache::SimpleFileCache) starts with default
>   expire time of "never" (-1), while later it uses gitweb defaults when
>   adaptive caching lifetime is added (20 / 1200 seconds).  This (slight)
>   inconsistency should be fixed, either by using default of "never", or
>   by using gitweb defaults for caching engine defaults in both patches:
>     gitweb/cache.pm - Stat-based cache expiration
>     gitweb/cache.pm - Adaptive cache expiration time
> 
>   Note that caching engine defaults are *independent* of gitweb's 
>   defaults in %cache_options.
> 
> * Describe (better than it is now) in comments or in commit message
>   why Temp::File is used for 'atomic write' _without_ locking (even
>   when there might be more than one process (re)generating the same
>   cache entry simultaneously).
> 
> * [improvement].  When using locking after
>     gitweb/cache.pm - Use locking to avoid 'cache miss stampede' problem
>   it is ensured that only one process would (re)generate cache entry.
>   Therefore Temp::File is not needed for temporary file; the temporary
>   file can have constant name.  This should improve performance a bit.
> 
>   But this might be unnecessary complication.
> 
> * Show information about when page was generated in the footer always
>   when caching is enabled; currently it is shown only if caching *and*
>   'timed' feature is enabled 
>     gitweb: Use Cache::Cache compatibile (get, set) output caching
> 
> * Actually check that using alternate caching engine works.  It can be
>   done (what is described in gitweb/README) by setting $cache to either
>   cache engine class (package) name, or to cache object (instantiated
>   cache).
> 
> * [cleanup] Remove commented out alternate solutions (commented out
>   code).
> 
> * Benchmark overhead of caching, and performance of caching, perhaps for
>   different caching engines including original patch by J.H.

* Turn off 'blame_incremental' view (and links to it) when caching is
  enabled.  It doesn't make sense without support for "tee"-ing output
  in caching engine (or to be more exact in the output capturing
  engine), i.e. without printing output while capturing it.  

  Also currently it doesn't work anyway, for some reason.

* Check why git_generating_data_html, i.e. the "Generating..." 
  subroutine doesn't add '.' as activity indicator and fix it.
  Test if the trick employed by it works in other browsers.

-- 
Jakub Narebski
Poland