1
0
我将缓存以下内容:
在页面加载时,获取所有轮询id的列表,使用此用户已完成的轮询的id列表对其进行筛选,然后按id从缓存中请求轮询。 回发时,我将使轮询的密钥和用户的密钥过期,并提交到数据库。在下一次请求时,缓存中的密钥将丢失,并且将使用更新的结果从数据库中重新创建密钥。如果你想,你也可以直接在回发时更新缓存中的结果,但通常的解决方案是让密钥过期。 问题主要在于您使用的是两个Web服务器,因此不能将这些项缓存在内存中。在一个Web服务器上更新的轮询在另一个Web服务器上不会过期,除非您在服务器之间采用某种形式的通信来同步它们的缓存。 我建议使用外部缓存,在这种情况下,我自己使用memcached。如果在每个Web服务器主机上安装memcached服务器,并将应用程序配置为使用两个memcaches,则始终会有一个同步缓存。 对于C#您可以使用Enyim Memcached客户端(http://memcached.enyim.com/)连接到服务器和Northscale Memcached服务器(http://www.northscale.com/products/memcached.html)对于服务器。 Enyim和Northscale工具都是免费的(开源的),并且都非常稳定,在生产中非常有用。而且,不,我没有受雇于这两家公司:-) |
2
2
旧规则是:尽可能早地缓存。就像IIS输出缓存胜过其他任何东西一样。数据缓存胜过数据库等。
更新:
并将显著降低服务器负载。 |
3
1
SQL Server可以访问多少个数据库/ASP.NET在“典型”服务器上减速前处理? 回答这个问题是不可能的,特别是因为您没有提供任何信息,甚至没有提供您使用的SQL Server版本。 什么是“典型服务器”?你说的数据库点击率到底是多少?数据库是如何设计的?SQL Server计算机和服务器之间的网络速度是多少ASP.NET服务器?瓶颈到底是什么?SQL事件探查器怎么说?(还有很多类似的问题要问) 对于这种情况,您希望使用哪种类型的缓存? 由于要减少对数据库的请求数,请考虑:
最后,我认为在保存结果时无法避免对数据库的影响。但以前的结果都是这样的 可以 |
4
0
至于缓存,这也取决于您的体系结构以及确保用户没有进行投票的重要性。无论何时实现缓存,都会有过时数据的风险,必须权衡这些风险。 也就是说,如果过时的数据没有那么重要,我会尝试确定什么时候您真的需要与数据库对话,在空闲时间可以做什么,什么是常量。
|
tincho87 · 避免Javascript/Css缓存 6 年前 |
Zac · 如何强制客户端重新下载我的网站? 6 年前 |
Kumar · bitbake清理使用只读NFS SSTATE缓存失败 6 年前 |
Chris Williams · 休眠/JPA缓存查找值 6 年前 |
Nymeria · 仅绑定到当前事务的Spring缓存 6 年前 |