MAMPでシングルページJavascriptアプリケーションを開発しています。JavaScriptとHTMLのテンプレートファイルがリクエスト間でキャッシュされています。
httpファイルのキャッシュを防止したいことをMAMPで示す簡単な方法はありますか?おそらく.htaccess
ファイルで?.htaccess
MacのMAMPの仮想ホストをどこに配置または変更しますか?
MAMPでシングルページJavascriptアプリケーションを開発しています。JavaScriptとHTMLのテンプレートファイルがリクエスト間でキャッシュされています。
httpファイルのキャッシュを防止したいことをMAMPで示す簡単な方法はありますか?おそらく.htaccess
ファイルで?.htaccess
MacのMAMPの仮想ホストをどこに配置または変更しますか?
これを試しましたか?との両方.htaccess
で機能する必要があります(通常、httpd.confからインクルードした場合はに配置されます)httpd.conf
VirtualHost
httpd-vhosts.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
。
ここの例に基づく: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>
私は同じ問題を抱えていましたが、ここで良い解決策を見つけました: MAMPでPHP5.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からのStack Overflowの回答、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をランダム化するこの方法は、たとえばajaxjQueryリクエストのキャッシュなしの設定の基本です。ブラウザは、異なるクエリ文字列を持つ2つのURLを同じと見なすことはなく、キャッシュされたバージョンを使用することもありません。
編集
mod_headersをテストする必要があることに注意してください。mod_headersがある場合は、Headerキーワードを使用してExpiresヘッダーを直接設定できます。
<FilesMatch "\.(js|css)$">
ExpiresActive On
ExpiresDefault A1
Header append Cache-Control must-revalidate
</FilesMatch>