我什么时候应该使用PHP Session vs Browser本地存储与JavaScript对象参数?

jjw*_*ign 8 javascript php session javascript-objects jquery-mobile

什么时候使用现代基于AJAX的应用程序存储数据的许多不同方式?我希望能为开发人员提供一些具体的指导方针.到目前为止,这就是我所看到的,而且它变得越来越混乱.

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

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

带有config参数的JavaScript对象:我一直使用init方法构建JavaScipts对象,该方法设置'settings'参数.这非常有用,因为我通常是从PHP传入的数据构建的.使用jQuery Mobile,这些数据甚至可以在页面之间保持不变,并随着AJAX请求响应而变化.

那么,您对每种方法的使用有何指导意见?

Tas*_*sos 11

PHP会话数据是不是永久性的数据存储,当你摧毁你将失去数据的浏览器会话.如果您不想永久存储数据,这非常有用.

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

任何其他方法如对象不是永久数据存储.

其他与浏览器相关的永久存储是COOKIES(如果你没有在会话结束时使它们过期),IndexedDb(请点击此处获取当前浏览器支持http://caniuse.com/#feat=indexeddb).

因此,根据您的网站或应用程序,您需要确定需要在短时间内或长时间或永久存储哪些数据,直到您手动删除它为止.

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

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

这些只是成千上万可能需求的几个例子.