JQuery UI AJAX вкладки и гранулированный контроль кеша контента - PullRequest
2 голосов
/ 04 декабря 2011

Я использую вкладки пользовательского интерфейса jQuery с содержимым ajax, вставленным в DIV, а не в IFRAME.

Содержимое хранится на сервере в виде текстового файла, состоящего из разметки HTML, но в этом файле отсутствует объявление DOCTYPE, раздел HEAD, раздел BODY, это в основном

  <DIV>lorem ipse</DIV>.

Я пыталсяэтот подход для принудительного сценария без кэширования:

 $("#tabs").tabs(
    {
    cache: false,
    ajaxOptions: {cache: false}
    }
);

Но когда я смотрю на вкладку Кэширование в Fiddler, он говорит следующее:

HTTP / 200-ответы кэшируются по умолчанию, если не истекаетЗаголовки, Pragma или Cache-Control присутствуют и запрещают кэширование.Заголовок HTTP / 1.1 ETAG присутствует: «53a38d5790b2cc1: ab2» Заголовок HTTP с последними изменениями присутствует: вс, 04 дек. 2011 14:23:50 GMT

Не предоставлена ​​явная информация об истечении срока действия HTTP.Большинство браузеров используют эвристические политики истечения срока действия: 10% разницы между Last-Modified и Date составляет '00: 20: 13 ', поэтому этот ответ будет эвристически истек 4/4/2011 13:08:26 PM.

Как можно сохранить этот конкретный контент как без кеша?

PS В ответ на замечание @ Mikael о том, что для предотвращения кеширования обычно добавляют какое-то изменяющееся значение в URL, я не совсем уверен, каксделать это при использовании декларативного подхода jQuery ajax:

<div id='tabs' class="ui-tabs">

   <ul>
       <li><a title="contentcontainer" href="foo.html">One</a></li>
   <li><a title="contentcontainer" href="foo2.html">Two</a></li>        
   <li><a title="contentcontainer" href="foo3.html">Three</a></li>
   </ul>
   <div id='contentcontainer'></div>
 </div>

Как добавить '?' + new Date().getTime().toString() к URL-адресу href?

1 Ответ

0 голосов
/ 04 декабря 2011

Я не уверен, что вызывает кеширование в этом случае.

Однако при работе с ajax-запросами одним из популярных способов предотвращения кеширования является добавление в URL случайного или временного параметра.например, запросить / public / static_file? _ = 1239871984 вместо / public / static_file

Другим способом предотвращения этого может быть добавление заголовка срока действия, который не очень хорошо работает в некоторых браузерах (если я правильно помню IE8было очень агрессивное кэширование ajax).

Тот же подход работает и для принудительного обновления файлов js / css при обновлении сайта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...