summaryrefslogtreecommitdiffstats
path: root/docs/manual/mod/mod_cache_disk.xml
blob: 03335a549adfee0c4557df9f16770a82d18d1275 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
<!-- $LastChangedRevision$ -->

<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<modulesynopsis metafile="mod_cache_disk.xml.meta">

<name>mod_cache_disk</name>
<description>Disk based storage module for the HTTP caching filter.</description>
<status>Extension</status>
<sourcefile>mod_cache_disk.c</sourcefile>
<identifier>cache_disk_module</identifier>

<summary>
    <p><module>mod_cache_disk</module> implements a disk based storage
    manager for <module>mod_cache</module>.</p>

    <p>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.</p>

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

    <p>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.</p>

    <p>The <program>htcacheclean</program> 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.</p>

    <note><title>Note:</title>
      <p><module>mod_cache_disk</module> requires the services of
      <module>mod_cache</module>, which must be
      loaded before mod_cache_disk.</p>
    </note>
    <note><title>Note:</title>
      <p><module>mod_cache_disk</module> uses the sendfile feature to
      serve files from the cache when supported by the platform, and
      when enabled with <directive module="core">EnableSendfile</directive>.
      However, per-directory and .htaccess configuration of
      <directive module="core">EnableSendfile</directive> are ignored by
      <module>mod_cache_disk</module> as the corresponding settings are not
      available to the module when a request is being served from the
      cache.</p>
    </note>
</summary>

<directivesynopsis>
<name>CacheRoot</name>
<description>The directory root under which cache files are
stored</description>
<syntax>CacheRoot <var>directory</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

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

    <example>
      CacheRoot c:/cacheroot
    </example>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>CacheDirLevels</name>
<description>The number of levels of subdirectories in the
cache.</description>
<syntax>CacheDirLevels <var>levels</var></syntax>
<default>CacheDirLevels 2</default>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

<usage>
    <p>The <directive>CacheDirLevels</directive> directive sets the number
    of subdirectory levels in the cache. Cached data will be saved this
    many directory levels below the <directive module="mod_cache_disk"
    >CacheRoot</directive> directory.</p>
    <p>A high value for <directive>CacheDirLevels</directive> combined
    with a low value for <directive>CacheDirLength</directive> will result in
    a relatively deep hierarchy, with a small number of subdirectories at each
    level.</p>

    <note>
      <p>The result of <directive>CacheDirLevels</directive>*
      <directive module="mod_cache_disk">CacheDirLength</directive> must
      not be higher than 20.</p>
    </note>

</usage>
</directivesynopsis>

<directivesynopsis>
<name>CacheDirLength</name>
<description>The number of characters in subdirectory names</description>
<syntax>CacheDirLength <var>length</var></syntax>
<default>CacheDirLength 2</default>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

<usage>
    <p>The <directive>CacheDirLength</directive> directive sets the number
    of characters for each subdirectory name in the cache hierarchy. It can
    be used in conjunction with <directive>CacheDirLevels</directive> to
    determine the approximate structure of your cache hierarchy.</p>
    <p>A high value for <directive>CacheDirLength</directive> combined
    with a low value for <directive>CacheDirLevels</directive> will result in
    a relatively flat hierarchy, with a large number of subdirectories at each
    level.</p>

    <note>
      <p>The result of <directive module="mod_cache_disk"
      >CacheDirLevels</directive>* <directive>CacheDirLength</directive>
      must not be higher than 20.</p>
    </note>

</usage>
</directivesynopsis>

<directivesynopsis>
<name>CacheMinFileSize</name>
<description>The minimum size (in bytes) of a document to be placed in the
cache</description>
<syntax>CacheMinFileSize <var>bytes</var></syntax>
<default>CacheMinFileSize 1</default>
<contextlist><context>server config</context>
  <context>virtual host</context>
  <context>directory</context>
  <context>.htaccess</context>
</contextlist>

<usage>
    <p>The <directive>CacheMinFileSize</directive> directive sets the
    minimum size, in bytes, for a document to be considered for storage
    in the cache.</p>

    <example>
      CacheMinFileSize 64
    </example>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>CacheMaxFileSize</name>
<description>The maximum size (in bytes) of a document to be placed in the
cache</description>
<syntax>CacheMaxFileSize <var>bytes</var></syntax>
<default>CacheMaxFileSize 1000000</default>
<contextlist><context>server config</context>
  <context>virtual host</context>
  <context>directory</context>
  <context>.htaccess</context>
</contextlist>
  
<usage>
    <p>The <directive>CacheMaxFileSize</directive> directive sets the
    maximum size, in bytes, for a document to be considered for storage in
    the cache.</p>

    <example>
      CacheMaxFileSize 64000
    </example>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>CacheReadSize</name>
<description>The minimum size (in bytes) of the document to read and be cached
  before sending the data downstream</description>
<syntax>CacheReadSize <var>bytes</var></syntax>
<default>CacheReadSize 0</default>
<contextlist><context>server config</context>
    <context>virtual host</context>
    <context>directory</context>
    <context>.htaccess</context>
</contextlist>
    
<usage>
    <p>The <directive>CacheReadSize</directive> 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.</p>

    <p>This directive only takes effect when the data is being saved to the
    cache, as opposed to data being served from the cache.</p>
  
    <example>
      CacheReadSize 102400
    </example>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>CacheReadTime</name>
<description>The minimum time (in milliseconds) that should elapse while reading
  before data is sent downstream</description>
<syntax>CacheReadTime <var>milliseconds</var></syntax>
<default>CacheReadTime 0</default>
<contextlist><context>server config</context>
  <context>virtual host</context>
  <context>directory</context>
  <context>.htaccess</context>
</contextlist>

<usage>
    <p>The <directive>CacheReadTime</directive> 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.</p>

    <p>The default of zero disables this option.</p>

    <p>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
    <directive module="mod_cache_disk">CacheReadSize</directive> directive to
    ensure that the server does not buffer excessively should data arrive faster
    than expected.</p>

    <example>
      CacheReadTime 1000
    </example>
</usage>
</directivesynopsis>
  
</modulesynopsis>