向 JavaScript 对象添加一些自定义会话变量

Posted

技术标签:

【中文标题】向 JavaScript 对象添加一些自定义会话变量【英文标题】:Adding some custom session variables to a JavaScript object 【发布时间】:2010-09-29 04:05:51 【问题描述】:

我目前有一个自定义会话处理程序类,它简单地构建在 php 的会话功能上(并与一些 mysql 表相关联)。

我有各种各样最适合我的应用程序的会话变量(主要保存在服务器端)。虽然我也在使用 jQuery 来提高前端的可用性,但我想知道将一些会话变量(一些基础知识和一些浏览偏好 id)提供给 JS 对象是否是一个不好的方法。

目前,如果我需要在前端访问任何此类信息,我会向专门编写的 php 页面发出 ajax 请求以提供适当的响应,尽管我不确定这是否是最佳实践(实际上我是很确定这只会产生过多的 Ajax 请求)。

有没有人有这方面的cmet?这是向客户端提供此类信息的最佳方式吗?

【问题讨论】:

【参考方案1】:

我真的猜这取决于很多因素。我的脑海里总是有“过早的优化......”。

早些年,我把想到的每一个小想法都冲进了这个应用程序。这通常会导致“我做得很酷,但我没有花时间完全掌握我要解决的问题;还是有问题吗?”

现在我使用明显的方法(就像你的那样),它很快(在第一次尝试时不会完全影响性能),然后分析我是否遇到问题。

换句话说:

    您需要多久从不同类型的已加载页面访问此信息(因为如果您在没有用户重新加载的情况下加载一次信息,那么重新获取它可能没有多大意义)乘以并发数客户?

    如果您将信息写入客户端 cookie 以实现快速 JS 访问,如果滥用(未经应用程序同意而修改)会对您的应用程序造成损害吗?如果 #1 适用,则无需像 WHATWG 建议的那样使用任何类型的离线存储来替换“JS”和“cookie”。

“快速”方法适合我,因为通常不会对前期开发研究进行大量投资。如果您已经仔细地这样做了……但是您可能已经知道该答案了;)

作为 3. 您始终可以将 html 推送到您的客户端,其中已经包含您在 JS 中需要的数据,也许这可以在您的情况下工作。看看会有什么其他建议会很有趣!

正如我的旁注:我也将 PHP 会话存储在 DB 中,直到我将它们移到 memcached(警告:它是缓存而不是持久存储,所以对你来说可能不是一个好主意,我可以忍受它,我只是确保它一直在运行)实现平均下降 20% 的数据库查询,并通过这个下降 90% 的写入查询。而且我什至还没有使用任何花哨的 Ajax,只是并发用户的数量。

【讨论】:

谢谢 非常有帮助,我之前的开发已经考虑了一些想法,但是由于该应用程序主要是为了我的使用,所以我陷入了进化。 :)【参考方案2】:

我会说这绝对是 AJAX 的矫枉过正,这些会话是私人的还是重要的不向访问者显示?只是把它扔在那里;就两者而言,cookie 是最简单的,将数据保存在 javascript 对象中使其对访问者来说同样容易读取,而当涉及到 cookie 是否启用时,如果没有 cookie,您将不会有会话.

http://www.quirksmode.org/js/cookies.html 是一个很好的关于 JS 中 cookie 处理的资源,包括两个用于读取和写入 cookie 的函数。

【讨论】:

会话保护管理区域以编辑站点数据,信息本身对其相关的用户并不过分敏感。 75% 是用户数据,25% 是系统索引等。谢谢你的信息:) 如果您不希望用户看到数据,那么设置 javascript var 和 cookie 是相等的。希望你能找到一个优雅的解决方案。

以上是关于向 JavaScript 对象添加一些自定义会话变量的主要内容,如果未能解决你的问题,请参考以下文章

向函数添加自定义属性

向控件添加自定义删除(后退、前移)按钮

如何将自定义 javascript 添加到 WordPress 管理员?

从 DOM 中读取 HTML 片段并向其中添加自定义数据

如何在 JavaScript 中“正确”创建自定义对象?

BigCommerce 自定义结帐页面