Jason, very nice patch, really improving Cache-Performance! I have to additions: first: I would like the default to be -1, no Caching. So when swapping in your util.py, working code does not get broken. Second: within def _q_lookup(self, request, name): there are two distinctions: files and directories. In your patch cache_time is only passed on to files, not to directories. So I suggest: def _q_lookup(self, request, name): """ Get a file from the filesystem directory and return the StaticFile or StaticDirectory wrapper of it; use caching if that is in use. """ if name in ('.', '..'): raise errors.TraversalError(private_msg="Attempt to use '.', '..'") if self.cache.has_key(name): # Get item from cache item = self.cache[name] else: # Get item from filesystem; cache it if caching is in use. item_filepath = os.path.join(self.path, name) while os.path.islink(item_filepath): if not self.follow_symlinks: raise errors.TraversalError else: dest = os.readlink(item_filepath) item_filepath = os.path.join(self.path, dest) if os.path.isdir(item_filepath): item = StaticDirectory(item_filepath, self.use_cache, self.list_directory, self.follow_symlinks,cache_time=self.cache_time) # !!! also propagate cache-time to subdirectories elif os.path.isfile(item_filepath): item = StaticFile(item_filepath, self.follow_symlinks, cache_time=self.cache_time) else: raise errors.TraversalError if self.use_cache: self.cache[name] = item if isinstance(item, StaticDirectory): return item else: return item(request) Thank you very much for sharing this extension, best wishes, Harald