3

将 CFC 对象存储在 REQUEST 范围内以供以后访问是否安全?目前,我们的网站至少会加载两次导航数据,如果他们使用我们的面包屑功能,可能会加载三次。有时,这些数据可能会有所不同,但是,大多数情况下,最终会进行三个单独的调用以获取相同的确切导航数据......

所以,我想在第一次加载之后,将导航数据保存在请求范围内的某种结构中,然后在随后的调用中,检查该数据是否已经存在,如果是,则使用存储的内容而不是而不是重新创建它。我知道这将访问包含对象之外的共享范围,这可能不是一个好习惯,但最终可以减少我们一半的页面加载时间......

我知道这是可以做到的,但是,我们最近遇到了服务器问题,其中一些可能是我们如何使用/存储某些东西的内存泄漏,所以想知道这样做是否安全......

4

2 回答 2

3

or范围variablesrequest适合您的目的,但更可取的是修改需要访问此变量的函数以接受您的缓存变量作为参数。对于 CFC,它可以在init()方法中传递并存储以供该 CFC 中的方法使用(假设您对其进行了初始化)

通过依赖一个全局变量(即使是一个仅限于当前请求的变量),您可能只会给自己带来麻烦,这可以通过确保方法更加封装来解决。

正如我之前的评论中提到的,ColdFusion - 何时使用“请求”范围?值得快速阅读,因为它在答案中有相关信息。

于 2012-04-18T15:20:13.643 回答
1

是的。唯一可以访问 REQUEST 范围的请求是当前请求。

于 2012-04-18T15:05:19.257 回答