2012-02-23 5 views
0

私のウェブページには、バックエンドから更新する画像があります。しかし、直接反映されない画像は、ユーザがctr + F5を行う必要があることを意味します。これは、クライアントのブラウザがその画像をキャッシュしていることを意味します。一度thayが更新されたら、更新されたイメージ、JS、CSSをリロードする方法はありますか?画像にこだわる/ブラウザでキャッシュされたCSS

私は私の側から何をしようとしています。

ETag 

私のためにはうまくいきませんでした。

私のページヘッダ

<meta http-equiv="Expires" CONTENT="-1" ></meta> 

<meta http-equiv="cache-control" content="no-cache"></meta> 

<meta http-equiv="Pragma" CONTENT="no-cache"></meta> 

しかし、同じ結果にタグを次を追加しました。 JSのために働く

ExpiresActive on 
ExpiresByType application/javascript "access plus 0 seconds" 
ExpiresByType image/jpg "access plus 0 seconds" 
ExpiresByType image/jpeg "access plus 0 seconds" 
ExpiresByType image/gif "access plus 0 seconds" 
ExpiresByType image/png "access plus 0 seconds" 
ExpiresByType text/css "access plus 0 seconds" 

上記構成のApache

を追加し、以下のような構成。しかし、イメージに直面する問題。 url/image名の末尾にトークン番号またはバージョン番号を追加することはできませんが、これはあまりにも多くのコード変更とテストが必要でした。 キャッシングから画像を制限するその他の集中管理方法はありますか

ありがとうございました。

答えて

1

javascriptを使用してイメージのsrcを変更すると、名前が変更され、ブラウザが強制的にリロードされます。

例:

document.getElementById('myimg').src = document.getElementById('myimg').src + '?r=' + Math.random(); 

ないクリーンなソリューションが、あなたの選択肢は限られているようです。

は、あなたが試みることができるjQueryを使ってページ全体の画像をリロードするには:あなたはすべてをリロードしなくて済むよう、最初のセレクタを変更することにより

$('img').each(function() { 
    $(this).attr('src', $(this).attr('src') + '?r=' + Math.random()) 
}); 

はあなたが地域にそれを制限することができます。 CSSスタイリングで指定された画像には影響しません。

+0

あなたのリプレイに感謝します。しかし、私が言及したように、コードを変更することはできません。ある場所で変更してアプリケーションに反映させるために、集中ソリューションをいくつかご利用ください。 – user1041580

+0

Apacheの設定を確認しましたか? [Apacheヘルプ](http://httpd.apache.org/docs/2.4/mod/mod_expires.html#expiresbytype) – GGJ

+0

はい。それは私が上記で与えたものと同じです。上記の設定では、私はあなたが上記のコメントで渡した同じリンクから得ました。 – user1041580