Кэширование фрагментов с использованием Javascript - PullRequest
0 голосов
/ 23 декабря 2010

Может кто-нибудь указать мне пример кода о том, как лучше всего выполнять кэширование при загрузке динамических частей страницы с использованием JavaScript?

Мой канонический пример включает страницу, на которой ничего не меняется, кроме того, что пользователь вошел в статус и имя пользователя в верхней части страницы. Изменить этот текст с помощью jQuery и ajax-запроса достаточно просто, но, поскольку я делаю это на $(document).ready(), если вы посмотрите быстро, вы увидите, что страница загружается с чем-то вроде «Нажмите здесь, чтобы войти», прежде чем запрос ajax сработает и обновляет этот раздел страницы.

Редактировать для уточнения :

Если я кеширую всю страницу, происходит следующее.

  1. Пользователь A запрашивает страницу
  2. Страница не кэшируется , поэтому приложение генерирует HTML с «Привет, пользователь A» в правом верхнем углу
  3. Пользователь B запрашивает страницу
  4. Страница кэшируется , поэтому приложение обслуживает нас как есть, включая бит «Привет, пользователь A» <- это часть, которую я хочу динамически обновлять. </li>

В идеале на шаге 2 страница кэшируется без бита «Привет, пользователь A», поэтому, когда кто-то запрашивает страницу, я делаю простой запрос ajax, чтобы получить приветствие, а затем отправляю его в дом.

Я предполагаю, что javascript - это путь, но я думаю, что должен быть лучший способ, чем ждать $(document).ready(), чтобы страница отображалась более естественно.

Если это имеет значение (хотя я не думаю, что это должно, поскольку решение, которое применяется к статическому html, также будет работать для того, что я делаю), я использую rails 2.3.x и jQuery.

Ответы [ 2 ]

1 голос
/ 23 декабря 2010

Я бы изначально загрузил статус пользователя на главной странице сервера, используя то же самое, что генерирует ответ AJAX. Затем, когда пользователь изменит статус, обновите его, используя клиентскую сторону AJAX.

Таким образом, исходная страница имеет правильный статус, но все еще может измениться, когда пользователь выполняет действие.

Представьте, что метод getStatus() создает правильный HTML-код для любого состояния, в котором находится пользователь. На этой странице у меня будет <div>, содержащий эту информацию. На стороне сервера позвоните getStatus() (используя PHP в качестве примера):

<div id="status"><?php =getStatus() ?></div>

Затем ваш AJAX-запрос вернет getStatus() и обновит содержимое <div id="status">.

0 голосов
/ 14 января 2011

Aha!Существует Railscast, который делает именно то, что я хочу!

Rails-й боже мой можно найти здесь: http://railscasts.com/episodes/169-dynamic-page-caching

...