Сохранить HTML в cookie - PullRequest
       31

Сохранить HTML в cookie

3 голосов
/ 14 мая 2011

Я использую jquery для клонирования и добавления html в div.

Моя проблема в том, что этот HTML будет удален при обновлении страницы. Вопрос в том, как сохранить добавленный HTML-код в div (код html будет содержать некоторые входные данные и списки выбора, а кода будет много).

На что мне обратить внимание?

Печенье

HTML5?

Что-нибудь еще?

Ответы [ 5 ]

3 голосов
/ 14 мая 2011

Используйте один из множества плагинов для хранения jquery. Многие из них используют хранилище html5, но если в браузере нет поддержки хранилища html5, он будет использовать другие методы. Например, с помощью плагина JQUERY STORAGE вы сохраните данные следующим образом:

$.Storage.set("name", "value");

и восстановите его следующим образом:

$.Storage.get("name");

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

3 голосов
/ 14 мая 2011

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

Еще один подход - получить маршрут AJAX.

Вы не хотите использоватькуки для этого, потому что:

куки загружаются при каждом запросе

куки могут содержать только ограниченный объем информации.

0 голосов
/ 02 февраля 2013

Хакан, вызов ajax сделает ваш кеш всей страницы бесполезным (или, по крайней мере, менее полезным), потому что ваш сервер будет загружать php + apache / nginx для каждого запроса снова, так что вы не получите почти никакой производительности или, по крайней мере,не большой, как полностью полный кеш страниц.Мы планируем реализовать решение для полного кэширования и с первой попытки решили использовать cookie и сеанс для корзины покупок, спрашивая, поддерживает ли клиент cookie и переходить на Ajax-вызов в противном случае.Скажи мне, если ты наконец нашел решение.Я планирую использовать nginx и memcache для полного кэширования страниц и php + apc + apache + mod_sitespeed для внутренних запросов

0 голосов
/ 14 мая 2011

вы можете попробовать эту функцию

<php
function getVar($name, $def = '') {
  if (isset($_REQUEST[$name]))
    return $_REQUEST[$name];
  else 
    return $def;
}


// check if overrides passed
$efind = getVar('q', '');
?>

этот пример для тега ввода

<input type="text" name="q"  onFocus="this.value=''" onBlur="if(this.value == '')this.value ='<?php echo htmlentities($efind); ?>'" value="<?php echo htmlentities($efind); ?>" />

исправьте, если я делаю ошибки

0 голосов
/ 14 мая 2011

Определенно не пытайтесь хранить HTML в cookie-файлах ... только ограничение размера 1 не сделает этот вариант хорошим.Однако вы можете сохранить «куки» в файлах cookie, чтобы при повторном отображении страницы инициировалась повторная вставка HTML-кода (либо путем повторного вызова функции, которая добавила его в первый раз, либо путем извлечения ее вчерез AJAX.)

Однако я бы порекомендовал вам выполнить обратный вызов AJAX на сервер, когда пользователь добавляет контент на страницу.Этот вызов обновит объект / базу данных на сервере таким образом, чтобы при перезагрузке страницы он возвращал весь контент, включая ту часть, которая была добавлена ​​пользователем динамически.

RFC 2109

[1] RFC 2109 - section 6.3 (on HTTP Cookies)
    4096 bytes per cookie
    20 cookies per unique host or domain name
...