我想知道我是否应该以某种方式缓存从DAL返回的对象?我可能有多个UI控件在页面的单个加载中调用相同的数据。
你们会推荐什么?我开始有点谨慎吗?它不是一个可怕的数据量。但如果我应该以某种方式缓存,那么推荐的方法是什么?
答案 0 :(得分:1)
您可以cache如果您在同一页面上确实有多个控件使用相同的数据,您可以在父页面中调用一次数据并将引用传递给每个控件,并在每个控件中使用Setter (而不是让每个控件从DAL本身拉出相同的数据),例如:
myControl.AllUsers = _allUsers;
....
myOtherControl.AllUsers = _allUsers;
我也同意@DanielHilgarth。缓存增加了复杂性(例如,何时刷新缓存)。如果页面加载速度很快,我不会打扰。
如果页面很慢,循环中的数据库调用往往是我的经验的罪魁祸首。
答案 1 :(得分:0)
这取决于它是否安全且必须这样做。如果您正在使用的数据不需要实时数据(即您的博客),那么无论如何您都认为这样做是必要的缓存(意味着您的网站运行缓慢)。
很多时候人们忘记考虑的缓存问题是,如果需要立即响应(例如禁止用户或更新支付网关信息),可以按需清除缓存。
缓存有两种主要类型,即滑动缓存和固定时间缓存。
滑动缓存(每次执行有效检索时都会扩展的缓存)非常适合具有相对容易计算值的资源,但可能会受到数据库/网络开销的影响。在滑动缓存上缓存1小时(或w / ever),然后每当DAO发生INSERT / UPDATE / DELETE时手动使缓存无效(删除)。通过这种方式,用户将看到实时结果,但只要有可能就会进行缓存。
固定时间缓存非常适合难以执行的资源(即非常复杂的存储过程),并且不需要实时准确性。第一次请求时,缓存1小时(或w / ever),并且在第一个小时结束之前不要清除缓存。缓存机制会忽略INSERT / UPDATE / DELETE(除非它绝对是不必要的)。
答案 2 :(得分:0)