summaryrefslogtreecommitdiffstats
path: root/docs/manual/mod/mod_cache.xml.ja
blob: b241d6a0fca89f038caf3621ca01782b65f72474 (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
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?>
<!-- English Revision: 504183:1029587 (outdated) -->

<!--
 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.xml.meta">

<name>mod_cache</name>
<description>URI をキーにしたコンテンツのキャッシュ</description>
<status>Extension</status>
<sourcefile>mod_cache.c</sourcefile>
<identifier>cache_module</identifier>

<summary>
    <note type="warning">このモジュールは <directive 
    module="mod_authz_host">Allow</directive> や <directive 
    module="mod_authz_host">Deny</directive> ディレクティブを無視しますので、
    注意して使って下さい。クライアントのホスト名、アドレスや環境変数を使って
    アクセスを制限したいコンテンツに対してはキャッシュ機能を有効にするべきではありません。
    </note>

    <p><module>mod_cache</module> はローカルのコンテンツやプロキシされた
    コンテンツをキャッシュするために使われる <a
    href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a> 準拠の
    HTTP コンテンツキャッシュを実装しています。<module>mod_cache</module>
    の動作にはストレージを管理するモジュールが必要です。標準
    Apache 配布には二つストレージ管理モジュールが含まれています:</p>
    
    <dl>
    <dt><module>mod_cache_disk</module></dt>
    <dd>ディスクを使用したストレージ管理機構を実装しています。</dd>

    <dt><module>mod_mem_cache</module></dt>
    <dd>メモリを使用したストレージ管理機構を実装しています。
    <module>mod_mem_cache</module> は次の二つのモードのどちらかで動作する
    ように設定できます: オープンされているファイル記述子をキャッシュするモードか、
    ヒープ上でのオブジェクトの自体をキャッシュをするモードです。
    <module>mod_mem_cache</module> はローカルで生成されるコンテンツや、
    <module>mod_proxy</module> が
    <directive module="mod_proxy">ProxyPass</directive> を使って設定されている
    ときの (つまり<dfn>リバースプロキシ</dfn> での) バックエンドサーバの
    コンテンツをキャッシュするのに使えます。</dd>
    </dl>

    <p>コンテンツのキャッシュへの保存と取得は URI に基づいたキーが使われます。
    アクセス保護のかけられているコンテンツはキャッシュされません。</p>
    <p>より詳細な解説や例については<a href="../caching.html">キャッシュ機能</a>
    を参照してください。</p>
</summary>
<seealso><a href="../caching.html">キャッシュ機能</a></seealso>

<section id="related"><title>関連モジュールとディレクティブ</title>
    <related>
      <modulelist>
        <module>mod_cache_disk</module>
        <module>mod_mem_cache</module>
      </modulelist>
      <directivelist>
        <directive module="mod_cache_disk">CacheRoot</directive>
        <directive module="mod_cache_disk">CacheDirLevels</directive>
        <directive module="mod_cache_disk">CacheDirLength</directive>
        <directive module="mod_cache_disk">CacheMinFileSize</directive>
        <directive module="mod_cache_dist">CacheMaxFileSize</directive>
        <directive module="mod_mem_cache">MCacheSize</directive>
        <directive module="mod_mem_cache">MCacheMaxObjectCount</directive>
        <directive module="mod_mem_cache">MCacheMinObjectSize</directive>
        <directive module="mod_mem_cache">MCacheMaxObjectSize</directive>
        <directive module="mod_mem_cache">MCacheRemovalAlgorithm</directive>
        <directive module="mod_mem_cache">MCacheMaxStreamingBuffer</directive>
      </directivelist>
    </related>
</section>

<section id="sampleconf"><title>サンプル設定</title>
    <example><title>Sample httpd.conf</title>
      #<br />
      # Sample Cache Configuration<br />
      #<br />
      LoadModule cache_module modules/mod_cache.so<br />
      <br />
      &lt;IfModule mod_cache.c&gt;<br />
      <indent>
        #LoadModule cache_disk_module modules/mod_cache_disk.so<br />
        # If you want to use mod_cache_disk instead of mod_mem_cache,<br />
        # uncomment the line above and comment out the LoadModule line below.<br />
        &lt;IfModule mod_cache_disk.c&gt;<br />
        <indent>
          CacheRoot c:/cacheroot<br />
          CacheEnable disk  /<br />
          CacheDirLevels 5<br />
          CacheDirLength 3<br />
        </indent>
        &lt;/IfModule&gt; <br />
        <br />
        LoadModule mem_cache_module modules/mod_mem_cache.so<br />
        &lt;IfModule mod_mem_cache.c&gt;<br />
        <indent>
          CacheEnable mem  /<br />
          MCacheSize 4096<br />
          MCacheMaxObjectCount 100<br />
          MCacheMinObjectSize 1<br />
          MCacheMaxObjectSize 2048<br />
        </indent>
        &lt;/IfModule&gt;<br />
        <br />
        # When acting as a proxy, don't cache the list of security updates<br />
        CacheDisable http://security.update.server/update-list/<br />
      </indent>
      &lt;/IfModule&gt;
    </example>
</section>

<directivesynopsis>
<name>CacheEnable</name>
<description>指定したストレージ管理方式を使ってのキャッシュを有効にする</description>
<syntax>CacheEnable <var>cache_type</var> <var>url-string</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

<usage>
    <p><directive>CacheEnable</directive> ディレクティブで <module>mod_cache</module> 
    モジュールが <var>url-string</var> 以下の URL をキャッシュするようにします。
    キャッシュストレージ管理方式は <var>cache_type</var> 引数で指定します。
    <var>cache_type</var> <code> mem</code> で、
    <module>mod_mem_cache</module> で実装されているメモリを使ったストレージ
    管理方式を使うように <module>mod_cache</module> に指示します。
    <var>cache_type</var> <code>disk</code> で、
    <module>mod_cache_disk</module> で実装されているディスクを使ったストレージ
    管理を使うように <module>mod_cache</module> に指示します。
    <var>cache_type</var> <code>fd</code> は <module>mod_cache</module> に
    <module>mod_mem_cache</module> により実装されているファイル記述子の
    キャッシュを使うように指示します。</p>

    <p>(下の例のように) <directive>CacheEnable</directive> ディレクティブの
    URL 空間が重複しているときは、該当するストレージ方式を順に試して、
    実際にリクエストの処理ができると、その方式で処理します。
    ストレージ管理方式が実行される順番は設定ファイル中の
    <directive>CacheEnable</directive> の順番により決定されます。</p>

    <example>
      CacheEnable  mem   /manual<br />
      CacheEnable  fd    /images<br />
      CacheEnable  disk  /<br />
    </example>

    <p>フォワードプロクシサーバとして動作する場合、
    <var>url-string</var> を使って、キャッシュを有効にするリモートサイトや
    プロクシプロトコルを指定することもできます。</p>

    <example>
      # Cache proxied url's<br />
      CacheEnable  disk  /<br /><br />
      # Cache FTP-proxied url's<br />
      CacheEnable  disk  ftp://<br /><br />
      # Cache content from www.apache.org<br />
      CacheEnable  disk  http://www.apache.org/<br />
    </example>

</usage>
</directivesynopsis>

<directivesynopsis>
<name>CacheDisable</name>
<description>特定の URL をキャッシュしない</description>
<syntax>CacheDisable <var> url-string</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

<usage>
    <p><directive>CacheDisable</directive> ディレクティブで
    <module>mod_cache</module> モジュールが <var>url-string</var> 以下の
    URL をキャッシュ<em>しない</em>ようにします。</p>

    <example><title>例</title>
      CacheDisable /local_files
    </example>
</usage>

</directivesynopsis>
<directivesynopsis>
<name>CacheMaxExpire</name>
<description>ドキュメントをキャッシュする最大時間を秒数で表したもの</description>
<syntax>CacheMaxExpire <var>seconds</var></syntax>
<default>CacheMaxExpire 86400 (一日)</default>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

<usage>
    <p><directive>CacheMaxExpire</directive> ディレクティブは、
    キャッシュする HTTP ドキュメントを、元のサーバに問い合わせないまま最大何秒
    保持してもよいかを指定します。つまり、ドキュメントは最大でこの秒数間ぶん古く
    なることになります。この最大値は、<transnote>レスポンス中で</transnote>ドキュメントと共に
    ドキュメントの期日が提供されている場合でも適用されます。</p>

    <example>
      CacheMaxExpire 604800
    </example>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>CacheMinExpire</name>
<description>ドキュメントをキャッシュする最小秒数</description>
<syntax>CacheMinExpire <var>seconds</var></syntax>
<default>CacheMinExpire 0</default>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

<usage>
    <p>キャッシュ可能な HTTP ドキュメントがあったときに、オリジンサーバに問い合わせることなく
    保持する秒数の最小値は <directive>CacheMinExpire</directive> ディレクティブを使って設定します。
    この値は、ドキュメントに妥当な有効期限が指定されていなかった場合にのみ使われます。</p>


    <example>
      CacheMinExpire 3600
    </example>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>CacheDefaultExpire</name>
<description>期日が指定されていないときにドキュメントをキャッシュするデフォルトの期間</description>
<syntax>CacheDefaultExpire <var>seconds</var></syntax>
<default>CacheDefaultExpire 3600 (1時間)</default>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

<usage>
    <p><directive>CacheDefaultExpire</directive> ディレクティブは、ドキュメントに
    有効期限 (expiry) や最終修正時刻 (last-modified) が指定されていない場合の
    デフォルトの時間を指定します。<directive>CacheMaxExpire</directive> 
    ディレクティブで指定された値はこの設定を上書き<em>しません</em>。</p>

    <example>
      CacheDefaultExpire 86400
    </example>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>CacheIgnoreNoLastMod</name>
<description>応答に Last Modified が無くても気にしないようにする</description>
<syntax>CacheIgnoreNoLastMod On|Off</syntax>
<default>CacheIgnoreNoLastMod Off</default>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

<usage>
    <p>通常、Last-Modified による最終修正時刻の無いドキュメントはキャッシュ
    されません。(例えば <module>mod_include</module> による処理のときなどに)
    Last-Modified 時刻が消去されたり、そもそも最初から提供されていない
    状況があります。<directive>CacheIgnoreNoLastMod</directive> 
    ディレクティブを使うと、Last-Modified 日時が指定されていない
    ドキュメントでもキャッシュするように指定できます。ドキュメントに
    最終修正時刻 (Last-Modified) 有効期限 (expiry) がない場合は、有効期限の
    生成に <directive>CacheDefaultExpire</directive> が使われます。</p>

    <example>
      CacheIgnoreNoLastMod On
    </example>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>CacheIgnoreCacheControl</name>
<description>キャッシュされているコンテンツを返さないようにクライアントから
リクエストされても無視する</description>
<syntax>CacheIgnoreCacheControl On|Off</syntax>
<default>CacheIgnoreCacheControl Off</default>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

<usage>
    <p>Cache-Control: no-cache ヘッダや Pragma: no-store ヘッダのあるリクエストに
    対しては、通常キャッシュを使いません。<directive>CacheIgnoreCacheControl</directive> 
    ディレクティブを使うと、この動作を上書きできます。
    <directive>CacheIgnoreCacheControl</directive> On とすると、
    リクエストに no-cache という値があっても、キャッシュを使ってドキュメントを
    返すようになります。認証を必要とするドキュメントは<em>決して</em>
    キャッシュされません。</p>

    <example>
      CacheIgnoreCacheControl On
    </example>

    <note type="warning"><title>警告</title>
       このディレクティブを使うと、ドキュメント取得時にキャッシュを使わないように
       クライアントがリクエストしているにもかかわらず、キャッシュを
       使うようになります。その結果、
       古いコンテンツが送られ続けることになってしまうかもしれません。
    </note>
</usage>
<seealso><directive module="mod_cache">CacheStorePrivate</directive></seealso>
<seealso><directive module="mod_cache">CacheStoreNoStore</directive></seealso>
</directivesynopsis>

<directivesynopsis>
<name>CacheIgnoreQueryString</name>
<description>キャッシュ時にクエリーストリングを無視する</description>
<syntax>CacheIgnoreQueryString On|Off</syntax>
<default>CacheIgnoreQueryString Off</default>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

<usage>
    <p>クエリーストリング付のリクエストについては通常、クエリーストリングごとに
    個別にキャッシュされます。
    キャッシュされるのは有効期限が指定されている場合のみで、これは
    RFC 2616/13.9 に従ったものです。
    <directive>CacheIgnoreQueryString</directive> ディレクティブを使うと
    有効期限が指定されていなくてもキャッシュしますし、
    クエリーストリングが異なっていてもキャッシュを返します。
    このディレクティブが有効になっている場合、キャッシュ機能の側面からみると、
    あたかもリクエストにクエリーストリングがついていなかったかのように扱います。</p>

    <example>
      CacheIgnoreQueryString On
    </example>

</usage>
</directivesynopsis>

<directivesynopsis>
<name>CacheLastModifiedFactor</name>
<description>LastModified の日付に基づいて有効期限 (expiry) 
を計算するための重みを指定する
</description>
<syntax>CacheLastModifiedFactor <var>float</var></syntax>
<default>CacheLastModifiedFactor 0.1</default>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

<usage>
    <p>ドキュメントに Last-Modified の日付が無いけれども有効期限 (expiry) 
    の日付があるというときに、有効期限を最終修正時刻からの経過時間として
    計算するようにできます。有効期限を次の計算式に従って生成するのですが、
    そのときに使われる <var>factor</var> を
    <directive>CacheLastModifiedFactor</directive> ディレクティブで指定します。
    </p>

    <p><code>expiry-period = time-since-last-modified-date * <var>factor</var>
    expiry-date = current-date + expiry-period</code></p>

    <p>例えば、ドキュメントが 10 時間前に最後に修正されていて、
    <var>factor</var> が 0.1 であれば、期日は 10*0.1 = 1 時間に
    設定されます。現在時刻が 3:00pm であれば、計算された期日は
    3:00pm + 1hour = 4:00pm になります。</p>

    <p>期日が <directive>CacheMaxExpire</directive> で設定されている値
    より大きくなってしまっている場合は、<directive>CacheMaxExpire</directive>
    の設定値が優先されます。</p>

    <example>
      CacheLastModifiedFactor 0.5
    </example>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>CacheIgnoreHeaders</name>
<description>指定された HTTP ヘッダをキャッシュに保存しない。
</description>
<syntax>CacheIgnoreHeaders <var>header-string</var> [<var>header-string</var>] ...</syntax>
<default>CacheIgnoreHeaders None</default>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

<usage>
    <p>RFC 2616 によると、hop-by-hop HTTP ヘッダはキャッシュには保管されません。
    以下のヘッダは hop-by-hop ヘッダに該当しますので、
    <directive>CacheIgnoreHeaders</directive>
    の設定に<em>関係なく</em>キャッシュには保管されません:</p>
    <ul>
      <li><code>Connection</code></li>
      <li><code>Keep-Alive</code></li>
      <li><code>Proxy-Authenticate</code></li>
      <li><code>Proxy-Authorization</code></li>
      <li><code>TE</code></li>
      <li><code>Trailers</code></li>
      <li><code>Transfer-Encoding</code></li>
      <li><code>Upgrade</code></li>
    </ul>

    <p><directive>CacheIgnoreHeaders</directive> で
    キャッシュに保管しない追加の HTTP ヘッダを指定します。
    例えば、クッキーをキャッシュに保管しないようにした方がよい場合も
    あるでしょう。</p>

    <p><directive>CacheIgnoreHeaders</directive> の引数は、
    キャッシュに保管しない HTTP ヘッダを空白区切りにしたリスト形式です。
    キャッシュに保管しないヘッダが hop-by-hop ヘッダだけの場合
    (RFC 2616 準拠の動作のとき) は、
    <directive>CacheIgnoreHeaders</directive> を <code>None</code>
    に設定できます。</p>

    <example><title>例 1</title>
      CacheIgnoreHeaders Set-Cookie
    </example>

    <example><title>例 2</title>
      CacheIgnoreHeaders None
    </example>

    <note type="warning"><title>警告:</title>
      <code>Expires</code> のような適切のキャッシュ管理のために必要な
      ヘッダが <directive>CacheIgnoreHeaders</directive> の設定により
      保管されていないときは、mod_cache の動作は定義されていません。
    </note>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>CacheStorePrivate</name>
<description>private と指定されているレスポンスのキャッシュを試みる。</description>
<syntax>CacheStorePrivate On|Off</syntax>
<default>CacheStorePrivate Off</default>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

<usage>
    <p>通常 Cache-Control: private ヘッダのついているレスポンスは
       キャッシュされません。<directive>CacheStorePrivate</directive> 
       ディレクティブでこの挙動を上書きできます。
       <directive>CacheStorePrivate</directive> On で private ヘッダのついている
       リソースに対してもキャッシュを試みるようになります。
       ただし認証の求められるリソースは <em>決して</em> キャッシュされません。</p>

    <example>
      CacheStorePrivate On
    </example>

    <note type="warning"><title>警告:</title>
       上流サーバがキャッシュしないように指定してきても、
       それを無視してキャッシュするようになります。
       望ましい挙動になるのは、本当に 'private' なキャッシュについてのみでしょう。
    </note>
</usage>
<seealso><directive module="mod_cache">CacheIgnoreCacheControl</directive></seealso>
<seealso><directive module="mod_cache">CacheStoreNoStore</directive></seealso>
</directivesynopsis>

<directivesynopsis>
<name>CacheStoreNoStore</name>
<description>no-store と指定されているレスポンスのキャッシュを試みる。</description>
<syntax>CacheStoreNoStore On|Off</syntax>
<default>CacheStoreNoStore Off</default>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

<usage>
    <p>通常 Cache-Control: no-store ヘッダのついているレスポンスは
       キャッシュされません。<directive>CacheStoreNoCache</directive> 
       ディレクティブでこの挙動を上書きできます。
       <directive>CacheStoreNoCache</directive> On で no-store ヘッダのついている
       リソースに対してもキャッシュを試みるようになります。
       ただし認証の求められるリソースは <em>決して</em> キャッシュされません。</p>

    <example>
      CacheStoreNoStore On
    </example>

    <note type="warning"><title>警告:</title>
       RFC 2616 に記載されているように no-store ディレクティブは、
       "不注意による機密情報の漏洩や残留 (バックアップテープ等) を防ぐ"
       目的で使われますが、このオプションを有効にすると、
       機密情報を保持することになってしまいます。
       ですので、ここで警告しておきます。
    </note>
</usage>
<seealso><directive module="mod_cache">CacheIgnoreCacheControl</directive></seealso>
<seealso><directive module="mod_cache">CacheStorePrivate</directive></seealso>
</directivesynopsis>
</modulesynopsis>