【问题标题】:localStorage or something else?localStorage 还是别的什么?
【发布时间】:2016-12-30 16:24:45
【问题描述】:

我正在尝试找出将动态加载的 html 存储在 div 中以供用户下次访问的最佳方式。

我已经阅读了一些关于 localStorage 的内容,并可能将这些信息字符串化,但是,我对实现不是很清楚。

但是,综上所述,这是我目前正在做的以及我想要完成的事情。

我正在使用如下代码:

$(function() {
    $('.cordpass').click(function() {
        var collection = $(this).find('span').load(this.href + ' #cords');
        $('#summary').append( $(collection) );
        return false;
    });
});

这实际上是从另一个页面获取信息并将其添加到 ID 为#summarydiv。这可以通过页面上的多个对象来完成(它们都在地图上)。无论如何,用户可以对各种东西进行排序。这对我的需求很有用。但是,我想将 HTML 保存在 #summary 中,以便下次用户访问时,HTML 就在那里。

最好的方法是什么? localStorage 是否适合我,还是我完全误解了它的用途,还有其他方法可以存储 HTML 以供下次访问?

【问题讨论】:

  • 存储 html 是无稽之谈。将数据存储在 localStorage 中。如果您想提供离线体验,请参阅“webapp”和“service worker”
  • 不要忘记本地存储是本地。您是否准备好存储的数据会因用户当前使用的浏览器/机器而有所不同?
  • 是的,每个用户应该是不同的。该应用程序是一个地图(使用谷歌地图),但是,弹出窗口有一个按钮,上面写着“添加到我的行程”,该按钮从应用程序所在的站点内的特定页面加载数据。我希望在用户离开和回来时提供该信息。这是否更有意义?如果我没有道理,我会提前道歉。提前致谢。
  • 是的,每个用户应该是不同的。但是同一个用户在不同的浏览器中呢?我认为这就是 FrédéricHamidi 所要求的。
  • 这是一个很好的观点。在这种情况下,这没什么大不了的。只要当前浏览器中的用户是相同的(因此无论出于何种原因他们从(例如)firefox 跳转到 chrome 都无需担心)。

标签: jquery html local-storage


【解决方案1】:

我认为如果每个用户的数据不同,您可以将数据存储在 mysql 数据库中。如果数据来自另一个页面,您只需将指向另一个页面的链接存储在数据库中,而不是所有数据。

您页面上的每个用户在数据库中都有不同的 ID,因此他们只能看到自己的数据。假设您有某种登录程序。

目前没有足够的信息来给出更好的答案。

好的,我会补充一下。您当然可以使用 cookie 在客户端存储信息。当然,每个 cookie 的 cookie 限制为 4k。听起来不多,但那是 4000 个字符的文本。就像我说的,您不想对大量文本使用 cookie,但可以存储一些链接和变量。

要设置 cookie,请执行此操作

setcookie($cookiename, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day

有效期为 30 天,但如果您真的愿意,可以无限期设置到期日。 要回显 cookie,请执行此操作

echo $_COOKIE['cookiename'];

您也可以将数组存储在 cookie 中。

$test = array(
0 => array('bill', 'ted'),
1 => array('alpha', 'romeo'),
2 => array('Chad', 'Something')
);

setcookie('names', $test);

但是,如果用户登录,我仍然建议将他们的数据存储在 mysql 数据库中。

可能还有其他方法。请记住,cookie 仅存在于打开它们的浏览器中。因此,如果您在一个浏览器中查看该页面,然后更改浏览器,则 cookie 将不存在。或者,如果他们从不同的机器访问。

如果用户有登录名,那么访问您的页面的机器并不重要。

【讨论】:

  • 托马斯,非常感谢您的回复。我想到了那条路线,但是,站点的这一部分不需要登录,因此我考虑使用本地存储或类似的东西。这只是一项正在进行的工作,但此测试页面marylandwine.com.64-207-179-169.c7gg-ww2l.accessdomain.com/… 您可以单击两个位置之一并添加。我想你可能会明白为什么我想在重新访问时存储这些数据。如果我可以提供更多信息来帮助您回答,请告诉我。非常感谢您的回复。
  • 我查看了您的页面,但无法确定要单击什么来查看您的问题。从好的方面来说,页面看起来不错,但在负面的方面,您需要花一些时间来优化您的网络图像。例如名为 home-bg-edit.jpg 的图片是 325k。几秒钟后,我把它从 Photoshop 中保存到网络上,然后降到了 60k,它看起来还是不错的。顺便说一句,你有没有想过使用 cookie。这些存储在用户机器上,也可以存储数组。
  • Thomas - 非常感谢您的赞美。是的——需要优化一些东西。 Photoshop 做得很好,但一直很喜欢这个:compressor.io。无论如何,如果您单击地图上的图钉,请单击添加,然后单击关闭,然后单击图钉并再次添加。 (当页面的其余部分完成时,说明将变得清晰)。加载到 div 中的信息,下次访问时会很棒。这可能与cookie有关吗?如果是这样,你有什么我应该阅读的有用的文章吗?非常感谢!
  • Cookie 类似于 SESSION 变量,但它们保留在客户端。您也可以将数组存储在 cookie 中。您是否应该使用 cookie 取决于您需要存储多少数据。您还可以将 cookie 设置为在一定时间限制后过期。 Cookie 并非旨在存储大量数据,但这取决于情况。如果您只存储一些指向新闻或其他内容的链接,则 cookie 可能就是答案。稍后会再次查看您的页面。
  • 感谢您提供的重要信息,托马斯!是的,总的来说,我们正在讨论存储一些链接、一个标签( 标签)和一个带有坐标的跨度。与此同时,我将开始研究这条路线。您可以发送有关通过 cookie 进行存储的任何信息都会很棒,但是,我相信一些简单的谷歌搜索也会为我指明正确的方向。每一点都有帮助。
猜你喜欢
  • 1970-01-01
  • 2011-10-03
  • 1970-01-01
  • 1970-01-01
  • 2016-12-13
  • 1970-01-01
  • 2018-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多