【问题标题】:Save html in cookie将 html 保存在 cookie 中
【发布时间】:2011-08-25 13:09:15
【问题描述】:

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

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

我应该调查什么?

饼干?

HTML5?

还有什么?

【问题讨论】:

  • 为了提供最佳解决方案,您能否提供一个用例说明您为什么要这样做?
  • 例如,如果您想使用静态 HTML 和 Javascript 构建一个非常简单灵活的购物车:D

标签: jquery html cookies append clone


【解决方案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 只能保存有限数量的信息。

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-03-08
        • 1970-01-01
        • 2013-07-10
        • 2020-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多