我啥时候应该使用 PHP 会话、浏览器本地存储和 JavaScript 对象参数?

Posted

技术标签:

【中文标题】我啥时候应该使用 PHP 会话、浏览器本地存储和 JavaScript 对象参数?【英文标题】:When should I use PHP Session vs Browser Local Storage vs JavaScript Object Parameters?我什么时候应该使用 PHP 会话、浏览器本地存储和 JavaScript 对象参数? 【发布时间】:2014-08-17 18:31:08 【问题描述】:

什么时候适合使用现代基于 AJAX 的应用程序存储数据的多种不同方式?我希望我可以为开发人员提供一些具体的指导方针。这是我目前所看到的,而且越来越混乱了。

PHP 服务器端会话: php 会话数据可能是存储基于会话的信息的最古老的方式。我经常通过来自 javascript/jQuery 对象的各种 AJAX 调用传入参数 - 以存储在 PHP Session 中。我还将数据对象(一些会话信息)作为对 JavaScript/jQuery 方法的响应/结果返回。

基于浏览器的本地存储:这通常用于存储需要在前端持久化的数据,但有时我不确定何时使用它。一个很好的用途是存储来自 navigator.geolocation 的地理位置信息。我在这里存储了很多信息,但我不确定这是否明智。它似乎永远不会过期,但可以从资源中删除。

带有配置参数的 JavaScript 对象:我一直在使用设置“设置”参数的 init 方法构建 JavaScipts 对象。这非常有用,因为我通常使用从 PHP 传入的数据来构建它。使用 jQuery Mobile,这些数据甚至可以从一个页面持续到另一个页面,并随着 AJAX 请求响应而变化。

那么,对于每种方法的使用,您会给出哪些指导方针?

【问题讨论】:

如果您希望它在服务器上或与安全性有关,请使用 session.如果您希望它在客户端并在用户不再在线时仍然存在,请使用基于浏览器的本地存储。 第三个选项。这取决于配置参数的来源,因此与以前的方法相比,此方法在不同的级别上运行,不能在两者之间进行选择。 【参考方案1】:

PHP 会话数据 不是永久数据存储,因为当您销毁浏览器会话时,您将丢失数据。如果你不这样做,这很有用 想要永久存储数据。

浏览器本地存储是永久的,除非您自己删除数据或清除浏览器缓存。有些用户会不时清除缓存,所以这可能是个问题。

Objects 等任何其他方法都不是永久的数据存储。

其他与浏览器相关的永久存储是 COOKIES(如果您不这样做 在会话关闭时将它们过期),IndexedDb(在此处查看当前浏览器支持http://caniuse.com/#feat=indexeddb)。

因此,根据您的网站或应用,您需要决定需要哪些数据 存储短时间、长时间或永久,直到您手动将其删除。

例如,如果您要存储,您将使用 LocalStorage 书签,如果您要存储地理位置点,则使用 Cookie 并在您关闭浏览器或应用程序后过期。

如果您使用 PHP 登录帐户,那么最佳做法是创建一个 PHP 会话,甚至在用户点击时更改会话超时 (记住我)。

这些只是数千种可能需求中的几个示例。

【讨论】:

我对 chrome 检查元素上的 sessionStorage 是什么感到困惑

以上是关于我啥时候应该使用 PHP 会话、浏览器本地存储和 JavaScript 对象参数?的主要内容,如果未能解决你的问题,请参考以下文章

我啥时候必须声明 session_start();?

在PHP和JavaScript中设置Cookie会话存储(SessionStorage)和本地存储(LocalStorage)

我啥时候应该使用准备好的语句?

我啥时候应该在课堂上使用“this”?

PHP 会话控制技术

我啥时候需要使用存储在数据库中的访问令牌?