回调是否会在cpu方面给服务器带来更多压力,因为它必须始终关注变化?
我认为刷新会使代码的可管理性降低,因为您必须找到刷新缓存的位置,并且可能会忘记添加刷新?
当刷新缓存时,在刷新缓存时,调用的页面似乎加载的时间更长,回调可能不太明显?
对于刷新,在页面被点击之前可能不会发生一段时间,因此可能存在陈旧数据?页面命中后,立即更改数据。
思考?我写的上面假设对数据库中的数据进行了缓存。
答案 0 :(得分:3)
如果通过ASP.Net Cache回调引用SqlCacheDependency,请参阅此文章The Mysterious Notification以了解回调的工作原理。如果您想正确地了解回调的成本,则必须阅读此链接。不仅与提供通知相关的成本(解雇,交付,接收都是数据库写入),而且还有与简单地设置影响每个的通知相关的成本更新/插入/删除触及缓存表的语句。再次阅读链接文章了解详情。回调与刷新相比如何?当正确性添加到图片中时,回调将在您的自定义刷新周围运行圈子...
真正的问题是永远不要回调与刷新。如果你可以做回调,那就做回调,因为它们总是比刷新更有效率,更不容易出错。真正的问题是缓存或不缓存。
答案 1 :(得分:1)
回调是特殊事件。它不会监视更改,一旦事件被触发,回调就会发生 刷新是再次请求页面的一种形式。取决于您使用的应用程序类型。
使用AJAX部件刷新特定信息,而不是在整个页面上使用刷新。 (因为我不知道,你刷新整个或部分)
如果你没有创建一个好的缓存机制,缓存可能会花费更多。
答案 2 :(得分:1)
使用回调不会导致服务器“观察”更改。我确信它会保留一个定期到期的计时器,并导致检查所有当前项目以查看它们是否已过期。访问项目时,如果到期时间是滑动窗口,则调整到期时间。检查过期的过程可能需要一些时间,但这并不像cpu一直在观察何时应该删除项目。我认为决定因素应该是你想要在你的日程安排中自动从缓存中删除未使用的项目,或者如果你想保留它们直到它们变脏(值已经改变)然后刷新它们以确保最新的值是永远可用。
答案 3 :(得分:1)
如果数据未过期,则回调不会产生大量资源成本(如果应该调用回调,则ASP.NET不会检查每一毫秒)。但是,它会导致数据始终存在于缓存中(假设您使用回调进行刷新),即使您只需要此特定部分一次。
一般情况下,你不应该试图对此过于聪明,只是在发现空白时加载缓存。这样,您只会将数据存储在您实际使用的缓存中。只有当刷新的时间长得令人无法接受时,才应该开始先发制人地加载数据。