2009-05-12 6 views
1

Я создаю некоторые диаграммы png и файлы excel, используя базу данных mysql. Я показываю диаграммы как изображения в своем веб-приложении, но время от времени пользователи IE не имеют доступа к последней версии файлов, потому что IE показывает им предыдущие загруженные данные (диаграммы и файлы excel)История IE

предотвратить это? На стороне клиента, что можно сделать?

Мое веб-приложение написано на PHP. Какой подход я должен использовать, чтобы заставить IE загружать новые файлы?

ответ

5

Другим подходом, который вы можете использовать, является добавление уникальной строки запроса к изображениям, которые вы показываете. В обработчике изображений вы можете игнорировать данные, которые фактически переданы в строке запроса, но IE будет обрабатывать URL-адреса с разными строками запросов как уникальные и, следовательно, требует загрузки каждого заново без использования кешированной версии.

Например, изменение:

<img src="mychart.png> 

к:

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

поможет вам избежать кэш IE.

+1

Вам даже не нужен " timestamp = 'bit, just' 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'); 
?> 
Смежные вопросы