Хорошо известно, что Internet Explorer агрессивно кэширует аякс-вызовы, тогда как все остальные браузеры каждый день захватывают данные. Обычно это плохо: я никогда не встречал случая, когда я хочу, чтобы ajax НЕ обращался к серверу. Firefox, Safari и другие браузеры знают это и не кэшируют вызовы ajax.
Чтобы предотвратить кеширование IE, вам необходимо выполнить одно из следующих действий:
- добавить маркер кэш-строки в строку запроса (например,
?time=[timestamp]
) - отправить заголовок ответа HTTP, который специально запрещает IE кэшировать запрос
- используйте ajax POST вместо GET
Я предпочитаю устанавливать заголовок без кэша. Это правильный способ: он говорит, что все браузеры не кэшируют, что именно вы намерены. Метод строки запроса заполняет кеш браузера материалами, которые никогда не будут восстановлены, что оставляет меньше места для законного содержимого кеша. И метод POST - это повреждение HTTP: POST предназначены для изменения данных.
В Grails лучший способ автоматической отправки заголовка do-not-cache для всех запросов ajax? Я не хочу изменять какие-либо контроллеры, поэтому я думаю, что там должен быть крутой фильтр-трюк или что-то в этом роде.
Спасибо!