回答:
これを試しましたか?両方で動作するはず.htaccess
、httpd.conf
とにVirtualHost
(通常に置かれhttpd-vhosts.conf
、あなたのhttpd.confから、それが含まれている場合)
<filesMatch "\.(html|htm|js|css)$">
FileETag None
<ifModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</ifModule>
</filesMatch>
100%ファイルがキャッシュされないようにする
これは、Google広告がヘッダーCache-Control:private、x-gzip-ok = "">を使用してプロキシとクライアントによる広告のキャッシュを防ぐ方法と似ています。
http://www.askapache.com/htaccess/using-http-headers-with-htaccess.htmlから
そして、オプションで、それ以外の拡張子を使用している場合は、取得するテンプレートファイルの拡張子を追加します.html
。
LoadModule headers_module lib/modules/mod_headers.so
<filesMatch "\.+">
または<filesMatch ^>
ここの例に基づく:http : //drupal.org/node/550488
以下はおそらく.htaccessで動作します
<IfModule mod_expires.c>
# Enable expirations.
ExpiresActive On
# Cache all files for 2 weeks after access (A).
ExpiresDefault A1209600
<FilesMatch (\.js|\.html)$>
ExpiresActive Off
</FilesMatch>
</IfModule>
<IfModule mod_expires.c>
and </IfModule>
セクションを削除します.. mod_expiresが有効になっていない場合、これらのディレクティブが静かに無視される代わりに、エラーが発生します。
私は同じ問題を抱えていましたが、ここで良い解決策を見つけました: MAMPでのPHP 5.5.3のキャッシュの停止
基本的にphp.iniファイルを見つけて、OPCache行をコメント化します。この別の答えが他の人にも役立つことを願っています。
mod_expiresがないと、ファイルに有効期限ヘッダーを設定するのが難しくなります。生成されたものについては、答えにいくつかのデフォルトヘッダーを設定して、mod_expiresの処理を行うことができます。
<?php header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + 3600)); ?>
(取得元:@brianeggeからのスタックオーバーフローの回答、ここでmod_expiresソリューションも説明されています)
これは、JavaScriptファイルなどの静的ファイルでは機能しません。静的ファイルについては、ブラウザとソースファイルの間にapache(有効期限モジュールなし)のみがあります。ブラウザで行われるjavascriptファイルのキャッシュを防ぐには、js urlの最後にランダムトークンを使用できます。たとえば?rd=45642111
、URLは次のようになります。
<script type="texte/javascript" src="my/url/myjs.js?rd=4221159546">
ページ上のこのURLがPHPファイルによって生成されている場合、単純にPHPでランダムな部分を追加できます。ランダムなクエリ文字列パラメーターを追加するだけでURLをランダム化するこの方法は、たとえばajax jQueryリクエストのキャッシュなし設定の基本です。ブラウザは、異なるクエリ文字列を持つ2つのURLが同じであると見なすことはなく、キャッシュされたバージョンを使用することもありません。
編集
mod_headersをテストする必要があることに注意してください。mod_headersがある場合は、Headerキーワードを使用してExpiresヘッダーを直接設定できます。