2009-10-26 2 views
3

У меня есть страница с некоторыми редактируемыми функциями, которые обновляются через Ajax при их редактировании. Существуют некоторые значения, которые хранятся в файле cookie, чтобы их можно было загружать при загрузке страницы. Если пользователь вносит изменения, затем переходит на другую страницу и нажимает кнопку «Назад» для возврата, исходная страница загружается из кеша без новых значений. Если пользователь обновляет страницу, изменения перезагружаются из файла cookie, и отображаются правильные значения. Можно ли аннулировать кеш, когда страница динамически изменяется? Я хочу, чтобы иметь возможность использовать кеш браузера, поэтому я не хочу, чтобы страница всегда приводила к недействительности кеша браузера, если я могу ему помочь. Любые рекомендации приветствуются.Как аннулировать кеш при изменении страницы с помощью Ajax?

ответ

0

Вам необходимо установить заголовки кеша в ответе HTTP.

В зависимости от вашей технологии вы можете сделать это на веб-сервере (например, на основе соответствующего URL-адреса) или в своем коде (например, установите заголовок с помощью фреймворка или какого-либо вызова API).

В частности:

no-cache 
expires 

Есть те, которые вы хотите.

+1

Спасибо за ответ Джейсон. Я могу решить проблему, установив заголовок, чтобы страница никогда не кэшировалась браузером, но большую часть времени мы хотим разрешить кэширование браузера. Это только в тех случаях, когда контент изменяется с помощью Ajax, что мы хотим аннулировать кеш браузера для этой страницы. Вызов Ajax не обновляет кеш браузера, если страница не перезагружена, поэтому, если вы покинете страницу и вернетесь через кнопку «Назад», изменения не отображаются. Еще раз спасибо – Andre

1

Вы можете загрузить свои данные через Ajax в первую очередь.

$(document).ready(function(){ 
    $.get("your_ajax_url"); 
}); 

Затем, когда вы нажмете кнопку возврата вызова Ajax повторяется и на стороне сервера, вы отправить ответ HTTP с правильно установленным кэшем или заголовки Etag.

0

вы можете написать, как этот

$.ajax(
    { 
     url: 'Serverpage name' 
     cache: false, 
     type: 'POST', 
     success: function(msg) 
     { 
     }); 
    }); 

Здесь настройки кэша: ложь, не будет установлен какой-либо кэш.

Смежные вопросы