11.13. Caching Directory Listings
Problem
You want to provide a directory listing but want to reduce the performance hit of doing so.
Solution
Use the TrackModified argument to IndexOptions to allow browsers to cache the
results of an auto-generated directory index:
IndexOptions +TrackModified
Discussion
When sending a directory listing to a client, Apache has to open that directory, obtain a directory listing, and determine various attributes of the files contained therein. This is very time consuming, and it would be nice to avoid this when possible.
By default, the Last Modified time sent with a directory listing
is the time that the content is being served. Thus, when a client, or
proxy server, makes a HEAD or
conditional GET request to
determine if it can use the copy that it has in cache, it will always
decide to get a fresh copy of the content. The
TrackModified option to IndexOptions cause mod_autoindex to send a Last Modified time
corresponding to the file in the directory that was most recently
modified. This enables browsers and proxy servers to cache this
content, rather than retrieving it from the server each time, and also
ensures that the listing that they have cached is in fact the latest
version.
Note that clients that don’t implement any kind of caching will not benefit from this directive. In particular, testing with ab will show no improvement from turning on this setting, as ab does not do any kind of content caching.
See Also
The manpage for the ab tool
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access