URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 7558
[ Назад ]

Исходное сообщение
"IE кеширует файлы для скачивания, как победить?"

Отправлено 027 , 18-Июн-12 23:38 
Задача (выполнена): сделать веб-сервис для конвертации одних plain/text файлов в другие.

Первичная проблема: сгенерированный файл с нестандартным расширением выдавался на данном хостинге с http хедером plain/text (решено посредством изучения причудливых настроек хостера. .httaccess  не работает, но можно нарулить mime-типы в админке).

Оставшиеся проблемы:
1. IE, вместо того, чтобы предлагать файл для скачивания, выводит тест на экран. (Приличные браузеры выводят окно для сохранения файла.)
2. IE кеширует выходной файл, и приходится сначала открыть его (текст на экране), обновить, увидеть, что обновился, сохранить как. (Приличные браузеры без проблем скачивают обновленную версию файла.)

Что сумел сделать:
1. При нажатии на ссылку сервер таки выдает заголовок
Content-Type: application/octet-stream
(в нормальных браузерах предлагается скачать, IE тупо открывает текстовое содержимое)
(заголовки смотрел в мазиле через HTTPFox)
2. В php обработчике дописал выдачу хедеров
Pragma:    No-cache
Cache-Control:    no-cache
Это уже от отчаяния. Эти хедеры относятся к самому скрипту обработчика. На выдаваемой им странице есть обыкновенная ссылка на файл. Который упорно кешируется IE при дефолтных настройках.

Чахоточная идея от чайника - попытаться сформировать ссылку на скачивание файла не средствами html, а средствами php, серией функций header(), чтобы заставить это угребище, IE, хотя бы время создания файла проверять, прежде чем тупо выдавать устаревшую копию из кеша. Не знаю пока, как это сделать, и можно ли.

Может быть, есть более кошерное решение?

<offtopic>
В процессе гуглежа наткнулся на такой вот совет от мелкософта:
http://support.microsoft.com/kb/222064
Предлагается создать еще одну секцию <head> в КОНЦЕ страницы с мета-тегом, призывающим к браузер к Pragma: no-cache.
[Это полный п...ц (вымарано)] Конгениально!
</offtopic>


Содержание

Сообщения в этом обсуждении
"IE кеширует файлы для скачивания, как победить?"
Отправлено ACCA , 19-Июн-12 05:50 
[...]
> угребище, IE, хотя бы время создания файла проверять, прежде чем тупо
> выдавать устаревшую копию из кеша. Не знаю пока, как это сделать,
> и можно ли.
> Может быть, есть более кошерное решение?

Я своим юзерам сказал - "на этом сайте поддерживается любой браузер от Google или Mozilla. Чтобы не говорили, что у вас не было выбора" Месяц побурчали, сейчас спрашивают, как вынести IE совсем.

Как альтернатива есть онанизм вприсядку - http://www.jtricks.com/bits/content_disposition.html


"IE кеширует файлы для скачивания, как победить?"
Отправлено 027 , 20-Июн-12 20:45 
> Я своим юзерам сказал - "на этом сайте поддерживается любой браузер от
> Google или Mozilla. Чтобы не говорили, что у вас не было
> выбора" Месяц побурчали, сейчас спрашивают, как вынести IE совсем.

К сожалению, это не мои юзвери. Мои-то подопечные давно научены не трогать каку. Вданном случае надо сделать для неопределенного круга пользователей и не выслушивать потом жалобы.
> Как альтернатива есть онанизм вприсядку - http://www.jtricks.com/bits/content_disposition.html

Спасибо за ссылку, идея понятна, попробую.



"IE кеширует файлы для скачивания, как победить?"
Отправлено 027 , 20-Июн-12 20:52 
Тьфу мне на лысину! Можно тупо дописывать к имени вновь сгенерированного файла timestamp, а предыдущую версию мочить.