在cookie中保存html

时间:2011-05-14 14:59:49

标签: jquery html cookies append clone

我正在使用jquery克隆并将一些html附加到div中。

我的问题是刷新页面时会删除此html。问题是如何在div中保存附加的HTML(html代码将包含一些输入和选择列表,并且会有大量代码)。

我应该注意什么?

缓存?

HTML5?

还有别的吗?

5 个答案:

答案 0 :(得分:3)

如果您只支持现代浏览器,我会选择HTML5的离线存储。

另一种方法是获得AJAX路线。

你不想为此使用cookies,因为:

每次请求都会加载

cookies只能保存有限数量的信息。

答案 1 :(得分:3)

使用大量的jquery存储插件之一。他们中的许多人使用html5存储,但如果在浏览器中不支持html5存储,它将使用其他技术。例如,使用JQUERY STORAGE插件,您将以这种方式保存数据:

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

并以这种方式恢复它:

$.Storage.get("name");

如果要将代码附加到另一个元素,我建议您保存要附加到存储的相同数据,而不是从文档中选择并获取它(它会更快一些)。

答案 2 :(得分:0)

绝对不要尝试在HTML中存储HTML ...单独的大小限制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

答案 3 :(得分:0)

你可以试试这个功能

<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); ?>" />

如果我犯了错误,请更正

答案 4 :(得分:0)

Hakan,ajax调用会使你的整页缓存无用(或至少不那么有用),因为你的服务器会再次为每个请求加载php + apache / nginx,这样你几乎不会获得任何性能,或者至少不是一个完整的整页缓存。我们计划完成一个完整的缓存解决方案,并且在第一次尝试时我们考虑使用cookie和会话购物车,询问客户端是否支持cookie并降级为Ajax调用。 告诉我你是否终于得到了解决方案。我打算将nginx和memcache用于整页缓存,并为后端请求使用php + apc + apache + mod_sitespeed