2009-05-12 30 views
1

私はいくつかのPNGチャートを生成し、mysqlデータベースを使用してファイルを処理します。私はWebアプリケーションでチャートを画像として表示しますが、Internet Explorerユーザは前回の読み込んだデータ(チャートやExcelファイル)を表示し続けるため、時々IEユーザはファイルの最後のバージョンにアクセスしません。IEの履歴

それを防ぐために?クライアント側で何ができるのですか?

私のウェブアプリケーションはPHPで書かれています。 IEに新しいファイルを読み込ませるためにはどのようなアプローチが必要ですか?

答えて

5

表示されている画像に一意のクエリ文字列を追加することもできます。イメージハンドラでは、クエリ文字列に実際に渡されるデータは無視できますが、IEでは異なるクエリ文字列を持つURLが一意であるとみなし、キャッシュされたバージョンを使用せずにそれぞれを読み込む必要があります。

<img src="mychart.png> 

に:変更たとえば

<img src="mychart.png?timestamp=0512200911090000"> 

を使用すると、IEのキャッシュを避けるために取得します。

+1

あなたも "を必要としませんタイムスタンプ= 'ビット、ちょうど' mychart.png?0512200911090000 'が動作します。 – swilliams

+1

真実ですが、静的ではなく一意のクエリ文字列を作成する方法を示しているので、ペアで説明する方が簡単です。 – JoshJordan

2
<HTML><HEAD> 
<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
<META HTTP-EQUIV="Expires" CONTENT="-1"> 
</HEAD><BODY> 
</BODY> 
</HTML> 
2

HTMLメタは機能しますが、PHPヘッダーを使用する方が効率的で正確です(look here)。この記事では、HTMLファイルもダウンロード可能なキャッシュについても説明しています。

キャッシュが(画像のコンテンツをストリーミング前に使用ヘッダ)PHPでこれらのいずれかの方法を行うことができます。

<?php 
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
    header('Pragma: no-cache'); 
?> 

または

<?php 
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
    header('Cache-Control: no-store, no-cache, must-revalidate'); 
    header('Cache-Control: post-check=0, pre-check=0', FALSE); 
    header('Pragma: no-cache'); 
?>