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

什么时候适合使用现代基于Ajax的应用程序存储数据的多种不同方式?我希望能给开发人员一些具体的指导。这是我到目前为止看到的情况,而且越来越乱。

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

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

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

那么,您对每种方法的使用有什么指导原则?


解决方案

PHP会话数据不是永久性数据存储,因为当您销毁浏览器会话时,您将丢失数据。如果您不执行此操作,这将非常有用 希望永久存储数据。

浏览器本地存储是永久性的,除非您自己删除数据或清除浏览器缓存。某些用户会不时清除缓存,因此这可能会成为问题。

任何其他方法(如对象)都不是永久性数据存储。

其他与浏览器相关的永久存储是Cookie(如果您不 在会话关闭时过期),索引数据库(检查此处了解当前浏览器支持http://caniuse.com/#feat=indexeddb)。

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

举个例子,如果您要存储以下内容,您将使用LocalStorage 书签,如果您存储的是地理位置点,则使用Cookie 并在关闭浏览器或应用程序后使其过期。

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

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

相关文章