148

MAMPでシングルページJavascriptアプリケーションを開発しています。JavaScriptとHTMLのテンプレートファイルがリクエスト間でキャッシュされています。

httpファイルのキャッシュを防止したいことをMAMPで示す簡単な方法はありますか?おそらく.htaccessファイルで?.htaccessMacのMAMPの仮想ホストをどこに配置または変更しますか?

4

5 に答える 5

331

これを試しましたか?との両方.htaccessで機能する必要があります(通常、httpd.confからインクルードした場合はに配置されます)httpd.confVirtualHosthttpd-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

于 2012-07-30T15:30:20.743 に答える
5

ここの例に基づく: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>
于 2012-07-18T00:35:31.900 に答える
3

私は同じ問題を抱えていましたが、ここで良い解決策を見つけました: MAMPでPHP5.5.3のキャッシュを停止します

基本的に、php.iniファイルを見つけて、OPCache行をコメントアウトします。この別の答えが他の人にも役立つことを願っています。

于 2014-01-02T20:15:03.723 に答える
2

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ヘッダーを直接設定できます。

于 2012-07-25T11:59:45.333 に答える
1
<FilesMatch "\.(js|css)$">
  ExpiresActive On
  ExpiresDefault A1
  Header append Cache-Control must-revalidate
</FilesMatch>
于 2019-09-03T06:26:42.580 に答える