将CFC对象存储在REQUEST范围内以便以后访问是否安全?现在,我们的网站加载导航数据至少两次,如果他们使用我们的面包屑功能,可能会加载三次。有时,这些数据可能会有所不同,但是,大多数情况下,三个单独的呼叫最终会被用来获取相同的导航数据......
所以,我想在第一次加载后,将REQUEST范围内的导航数据保存在某种结构中,在后续调用中,只需查看该数据是否已存在,如果是,只需使用存储而不是再次重新创建它。我知道这将访问一个包含对象之外的共享范围,这可能不是一个好习惯,但最终可以减少一半的页面加载时间......
我知道它可以完成,但是,我们最近遇到了服务器问题,其中一些可能是我们使用/存储某些东西的内存泄漏,所以想知道这是否安全... < / p>
答案 0 :(得分:3)
variables
或request
范围适合您的目的,但更可取的是修改需要访问此变量的函数以接受缓存变量作为参数。关于CFC,它可以在init()
方法中传递并存储以供该CFC中的方法使用(假设您初始化它)
依靠一个全局变量(即使是一个限制在当前请求中的变量),你可能只会给自己造成困难,这可以通过确保方法更加封装来解决。
正如我之前的评论所述,ColdFusion - When to use the "request" scope?值得快速阅读,因为它在答案中有相关信息。
答案 1 :(得分:0)
是。有权访问REQUEST范围的唯一请求是当前请求。