我们正在为多租户Web应用程序进行一些性能优化。目前,在每个Web请求开始时创建LinqToSql数据上下文。上下文具有Web请求的生命周期,并使用Castle Windsor将其注入到需要它的任何对象的构造函数中。
我们考虑在会话缓存中缓存上下文(以及附加到它的一组对象),最多几分钟,以优化后续Web请求的设置成本。这是好主意吗?需要考虑哪些问题?
答案 0 :(得分:2)
一个坏主意IMO。最大的问题是并发性。由于连接池,只要您将数据上下文用作数据的管道而不是数据桶本身,成本就不会那么高。
缓存数据;抛弃数据上下文。
尝试保留数据上下文另外不会扩展到多个服务器,也不支持除进程外的任何缓存实现。
您是否测量设置成本,以便您知道这是否值得考虑?我真的不相信这是你的瓶颈。