将 html 保存在 cookie 中
Posted
技术标签:
【中文标题】将 html 保存在 cookie 中【英文标题】:Save html in cookie 【发布时间】:2011-08-25 13:09:15 【问题描述】:我正在使用 jquery 克隆一些 html 并将其附加到一个 div 中。
我的问题是刷新页面时这个html会被删除。问题是如何将附加的 HTML 保存在 div 中(html 代码将包含一些输入和选择列表,并且会有大量代码)。
我应该调查什么?
饼干?
HTML5?
还有什么?
【问题讨论】:
为了提供最佳解决方案,您能否提供一个用例说明您为什么要这样做? 例如,如果您想使用静态 HTML 和 javascript 构建一个非常简单灵活的购物车:D 【参考方案1】:使用大量 jquery 存储插件之一。他们中的许多人使用 html5 存储,但如果浏览器中不支持 html5 存储,它将使用其他技术。例如使用JQUERY STORAGE 插件,您可以通过这种方式保存数据:
$.Storage.set("name", "value");
并以这种方式恢复它:
$.Storage.get("name");
如果您要将代码附加到另一个元素,我建议您也保存要附加到存储中的相同数据,而不是从文档中选择并获取它(这会更快一些)。
【讨论】:
【参考方案2】:Hakan,ajax 调用将使您的整页缓存无用(或至少不太有用),因为您的服务器将再次为每个请求加载 php+apache/nginx,因此您几乎不会获得任何性能,或者至少不会获得任何性能不像完全完整的页面缓存那么大。我们计划做一个完整的缓存解决方案,起初我们考虑使用 cookie 和 session 来处理购物车,询问客户端是否支持 cookie 并降级到 Ajax 调用。 告诉我你是否最终找到了解决方案。我打算使用 nginx 和 memcache 进行全页缓存,使用 php + apc + apache + mod_sitespeed 进行后端请求
【讨论】:
【参考方案3】:绝对不要尝试将 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
【讨论】:
感谢您阻止我尝试将 HTMl 存储在 cookie 中。如果 HTML5 不适合我的目的,我将尝试 Ajax 调用 :)【参考方案4】:你可以试试这个功能
<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); ?>" />
如有错误请指正
【讨论】:
【参考方案5】:如果您只想支持现代浏览器,我会选择 HTML5 的离线存储。
另一种方法是获取 AJAX 路由。
您不想为此使用 cookie,因为:
cookie 会在每次请求时加载
cookies 只能保存有限数量的信息。
【讨论】:
嗨 PeeHaa,“HTML5 的离线存储”听起来很有趣。我会调查那个!除了 Google.com 之外,关于从哪里开始阅读的任何建议? 很多很好的资源@谷歌搜索,也在这里。 bogotobogo.com/HTML5/HTML5_Tutorial_Offline_Storage.html 在这里找到我需要的东西net.tutsplus.com/tutorials/html-css-techniques/… @PeeHaa 你是什么意思“cookies get in each request”? 如果域设置了 cookie,它将在每个后续请求中发送。以上是关于将 html 保存在 cookie 中的主要内容,如果未能解决你的问题,请参考以下文章