Grails: лучший способ отправлять заголовки кеша при каждом вызове ajax

Хорошо известно, что Internet Explorer агрессивно кэширует вызовы ajax , тогда как все другие браузеры каждый раз захватывают данные свежие. Обычно это плохо: я никогда не сталкивался со случаем, когда я хочу, чтобы ajax НЕ связывался с сервером. Firefox, Safari и другие браузеры знают это и не кэшируют вызовы ajax.

Чтобы предотвратить кеширование IE, вы должны выполнить одно из следующих действий:

  • добавить токен очистки кеша в строку запроса (например, ? Time = [timestamp] )
  • отправить заголовок ответа HTTP, который конкретно запрещает IE кэшировать запрос
  • использовать ajax POST вместо GET

Я предпочитаю устанавливать заголовок без кеширования. Это правильный способ: он сообщает всем браузерам не кэшировать, а это именно то, что вы намереваетесь. Метод строки запроса заполняет кеш браузера данными, которые никогда не будут извлечены, оставляя меньше места для допустимого содержимого кеша. А метод POST - это искажение HTTP: POST предназначены для изменения данных.

Как лучше всего в Grails автоматически отправлять заголовок do-not-cache для всех запросов ajax? Я не хочу изменять какие-либо контроллеры, поэтому я думаю, что это должен быть классный трюк с фильтрами или что-то в этом роде.

Спасибо!

12
задан Dean Moses 14 May 2011 в 09:20
поделиться