scope - 在 Cold Fusion 中跨不同 cfm 页面访问变量
问题描述
我有一个 cfquery 结果集,我需要在我的代码的不同 cfm 页面中访问它。最初,我尝试通过将其序列化为 json 对象,将其分配给客户端范围内的变量。但是,CF 不允许在客户端范围内分配复杂数据。我尝试将它分配给应用程序范围内的变量,但问题在于一个用户有时该值类似于同时登录到应用程序的另一个用户。任何人都可以帮助我实现这一目标,因为客户端范围变量和应用程序范围变量是不可选择的。
解决方案
在任何范围内存储查询数据时都必须非常小心。您最终可能会在这些范围内存储越来越多的数据,这会消耗服务器上的内存。server
如果没有从这些范围(特别是application
和)清除此数据的策略session
,您可能会随着时间的推移对服务器的性能产生负面影响。随着用户数量的增加,缓存数据/内存增加,应用程序性能下降。
通常情况下,我更愿意根据需要在各个页面上重新运行查询。使用包含您的查询的函数创建 CFC。将查询的任何相关数据作为参数传递给函数。然后,您可以在多个页面上重复使用该查询。
CFML 应用程序中变量作用域的概览:
http://www.learncfinaweek.com/course/index/section/Decision_Making_and_Scopes/item/Scopes/
- 应用程序:应用程序变量在当前命名应用程序的所有连接客户端之间共享。此范围也用于使用单例模式实例化的对象。此范围适用于应用程序生命周期内的请求,可能会在服务器关闭、应用程序故障或应用程序超时时终止。
- 会话:开发人员使用会话变量跨请求存储单个访问者的数据。此范围仅适用于当前会话,并且将持续到服务器或应用程序终止或会话超时。
代码重用组件概述:http: //www.learncfinaweek.com/course/index/section/Code_Reuse/item/Components
推荐阅读
- java - java / kotlin方程中的时间顺序和加法函数
- android - 数据库通知和屏幕刷新
- xslt - 在不同节点中查找项目
- javascript - 如何在底部导航栏中访问类的 this.state (React Native)
- outlook - 无法在 Outlook-2013 中添加帐户
- html - 相对于容器中父图像的缩放,如何缩放/移动容器中的子图像?
- php - Symfony - 表单或 AJAX
- c# - C# 与 Crypto-JS 返回不同的结果
- google-data-studio - 如何在 Google Data Studio 中的图表中转轴?
- excel - Excel Userform:如何保证用户数据录入统一?