2011-01-24 5 views
2

Я пытаюсь кэшировать некоторые документы на стороне клиента, чтобы быстрее переключаться между ними.Хороший метод кэширования iframe на стороне клиента

Документы загружены в iframe, поэтому вопрос о том, как его кешировать локально в браузере, представляет собой вопрос.

Мой метод должен был иметь переменную, элемент, а затем сделать

if (item.cache) { 
    $('.holder', someElem).html(item.cache); 
    return; 
} 

item.cache = $('<iframe....'); 
$('.holder', someElem).html(item.cache); 

Однако этот метод сохраняет перезагрузки IFrame ЦСИ при закачке на держатель.

Какие-либо хорошие методы для кэширования iframe на стороне клиента?

ответ

2

iframe фактически не вызывает обновление страницы до тех пор, пока она не будет добавлена ​​в dom. Я предполагаю, что вы храните экземпляр iframe, но не добавляете его в дом до его времени, чтобы увидеть его. Этот метод не работает. Я бы предложил использовать css «display: none», чтобы загрузить его и скрыть, а затем показать его, когда вам это нужно.

С другой стороны, держитесь подальше от iframes. Я бы предложил использовать ajax для загрузки данных в div, а затем скрыть это div.

+0

Скрыть/показать работает. Спасибо :) Мы не можем держаться подальше от iframe в этом случае. – freeall

+0

«Держитесь подальше от iFrames» Почему? Подобно тому, как HTML-таблицы отлично подходят для табличных данных, а не для макетов, iFrames являются прекрасными для выполнения того, что они предназначены для этого: создайте еще одну страницу внутри своей веб-страницы. Загруженная страница ajax не запускает сценарии или не включает стили на родительскую страницу. Вам придется перебирать эти элементы и запускать их вручную, и даже тогда вы получите возможные конфликты между классами. Используйте iFrame, если вам нужно встроить внешнюю страницу и, возможно, даже внутреннюю страницу в некоторых случаях. – phillyslick

3

У HTTP есть встроенное кэширование. Марк Ноттингем написал a decent overview. Установка заголовков и Expires должна быть достаточной для того, что вы описываете.

+0

Спасибо за ваш ответ. Но разве это не требует, чтобы браузер сначала спросил сервер, есть ли обновленная версия, а затем загрузите его из своего локального кеша? – freeall

+0

Нет, это для заголовка 'Expires'. – Jim

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