【发布时间】:2012-04-18 13:49:00
【问题描述】:
将 CFC 对象存储在 REQUEST 范围内以供以后访问是否安全?目前,我们的网站至少会加载两次导航数据,如果他们使用我们的面包屑功能,可能会加载三次。有时,这些数据可能会有所不同,但在大多数情况下,最终会进行三个单独的调用以获取相同的确切导航数据...
所以,我想在第一次加载之后,将 REQUEST 范围内的导航数据保存在某种结构中,然后在随后的调用中,检查该数据是否已经存在,如果是,就使用什么被存储而不是重新创建它。我知道这将访问包含对象之外的共享范围,这可能不是一个好习惯,但最终可以减少一半的页面加载时间......
我知道这是可以做到的,但是,我们最近遇到了服务器问题,其中一些可能是我们使用/存储某些东西的方式导致内存泄漏,所以想知道这样做是否安全......
【问题讨论】:
-
不清楚您是否希望跨多个页面加载维护信息,但是如果它是每个用户,我会查看这种缓存的会话范围,或者如果它是每个用户,我会查看应用程序应用。阅读此答案:stackoverflow.com/questions/25672/…
-
存储在会话中,或者其他持久化范围对我们不起作用;我已经试过了。我只考虑 REQUEST,因为我假设它在请求结束后被完全“丢弃”,但即使每个请求“缓存”这些数据也可能至少节省 1/2 的页面加载时间,因为我们不必这样做每个请求多次加载相同的数据。
-
好吧,如果它只是针对单个请求,那么调用模板中的变量范围怎么样?以前用过类似的。这个变量需要在函数中访问吗?
-
是的,它需要在函数和 CFC 中可访问(我知道,这不是好的做法,但现在我更担心性能,因为这是最近的一个问题)。
标签: coldfusion coldfusion-8 cfc