Apache HTTP Server Version 2.4

Apache > HTTP Server > Documentation > Version 2.4 > Modules

# Apache Module mod_cache_disk

Available Languages: en | fr | ja | ko

Description: | Disk based storage module for the HTTP caching filter.
Status: | Extension
Module Identifier: | cache_disk_module
Source File: | mod_cache_disk.c

### Summary

`mod_cache_disk` implements a disk based storage manager for `mod_cache`.

The headers and bodies of cached responses are stored separately on disk, in a directory structure derived from the md5 hash of the cached URL.

Multiple content negotiated responses can be stored concurrently, however the caching of partial content is not yet supported by this module.

Atomic cache updates to both header and body files are achieved without the need for locking by storing the device and inode numbers of the body file within the header file. This has the side effect that cache entries manually moved into the cache will be ignored.

The `htcacheclean` tool is provided to list cached URLs, remove cached URLs, or to maintain the size of the disk cache within size and/or inode limits. The tool can be run on demand, or can be daemonized to offer continuous monitoring of directory sizes.

### Note:

`mod_cache_disk` requires the services of `mod_cache`, which must be loaded before mod_cache_disk.

### Note:

`mod_cache_disk` uses the sendfile feature to serve files from the cache when supported by the platform, and when enabled with `EnableSendfile`. However, per-directory and .htaccess configuration of `EnableSendfile` are ignored by `mod_cache_disk` as the corresponding settings are not available to the module when a request is being served from the cache.

### Directives

### See also

- `mod_cache`
- `mod_cache_socache`
- Caching Guide

- Comments

## CacheDirLength Directive

Description: | The number of characters in subdirectory names
Syntax: | `CacheDirLength length`
Default: | `CacheDirLength 2`
Context: | server config, virtual host
Status: | Extension
Module: | mod_cache_disk

The `CacheDirLength` directive sets the number of characters for each subdirectory name in the cache hierarchy. It can be used in conjunction with `CacheDirLevels` to determine the approximate structure of your cache hierarchy.

A high value for `CacheDirLength` combined with a low value for `CacheDirLevels` will result in a relatively flat hierarchy, with a large number of subdirectories at each level.

The result of `CacheDirLevels`* `CacheDirLength` must not be higher than 20.

## CacheDirLevels Directive

Description: | The number of levels of subdirectories in the cache.
Syntax: | `CacheDirLevels levels`
Default: | `CacheDirLevels 2`
Context: | server config, virtual host
Status: | Extension
Module: | mod_cache_disk

The `CacheDirLevels` directive sets the number of subdirectory levels in the cache. Cached data will be saved this many directory levels below the `CacheRoot` directory.

A high value for `CacheDirLevels` combined with a low value for `CacheDirLength` will result in a relatively deep hierarchy, with a small number of subdirectories at each level.

The result of `CacheDirLevels`* `CacheDirLength` must not be higher than 20.

## CacheMaxFileSize Directive

Description: | The maximum size (in bytes) of a document to be placed in the cache
Syntax: | `CacheMaxFileSize bytes`
Default: | `CacheMaxFileSize 1000000`
Context: | server config, virtual host, directory, .htaccess
Status: | Extension
Module: | mod_cache_disk

The `CacheMaxFileSize` directive sets the maximum size, in bytes, for a document to be considered for storage in the cache.

    CacheMaxFileSize 64000

## CacheMinFileSize Directive

Description: | The minimum size (in bytes) of a document to be placed in the cache
Syntax: | `CacheMinFileSize bytes`
Default: | `CacheMinFileSize 1`
Context: | server config, virtual host, directory, .htaccess
Status: | Extension
Module: | mod_cache_disk

The `CacheMinFileSize` directive sets the minimum size, in bytes, for a document to be considered for storage in the cache.

    CacheMinFileSize 64

## CacheReadSize Directive

Description: | The minimum size (in bytes) of the document to read and be cached before sending the data downstream
Syntax: | `CacheReadSize bytes`
Default: | `CacheReadSize 0`
Context: | server config, virtual host, directory, .htaccess
Status: | Extension
Module: | mod_cache_disk

The `CacheReadSize` directive sets the minimum amount of data, in bytes, to be read from the backend before the data is sent to the client. The default of zero causes all data read of any size to be passed downstream to the client immediately as it arrives. Setting this to a higher value causes the disk cache to buffer at least this amount before sending the result to the client. This can improve performance when caching content from a reverse proxy.

This directive only takes effect when the data is being saved to the cache, as opposed to data being served from the cache.

    CacheReadSize 102400

## CacheReadTime Directive

Description: | The minimum time (in milliseconds) that should elapse while reading before data is sent downstream
Syntax: | `CacheReadTime milliseconds`
Default: | `CacheReadTime 0`
Context: | server config, virtual host, directory, .htaccess
Status: | Extension
Module: | mod_cache_disk

The `CacheReadTime` directive sets the minimum amount of elapsed time that should pass before making an attempt to send data downstream to the client. During the time period, data will be buffered before sending the result to the client. This can improve performance when caching content from a reverse proxy.

The default of zero disables this option.

This directive only takes effect when the data is being saved to the cache, as opposed to data being served from the cache. It is recommended that this option be used alongside the `CacheReadSize` directive to ensure that the server does not buffer excessively should data arrive faster than expected.

    CacheReadTime 1000

## CacheRoot Directive

Description: | The directory root under which cache files are stored
Syntax: | `CacheRoot directory`
Context: | server config, virtual host
Status: | Extension
Module: | mod_cache_disk

The `CacheRoot` directive defines the name of the directory on the disk to contain cache files. If the `mod_cache_disk` module has been loaded or compiled in to the Apache server, this directive must be defined. Failing to provide a value for `CacheRoot` will result in a configuration file processing error. The `CacheDirLevels` and `CacheDirLength` directives define the structure of the directories under the specified root directory.

    CacheRoot c:/cacheroot

Available Languages: en | fr | ja | ko

## Comments

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.