我正在使用Razor 3开发一个ASP.NET网页项目,并以.NET Framework 4.5为目标。此时我不知道它是否将部署在IIS7(Windows Server 2008 R2)或IIS8(Windows Server 2012)上。
我有一些.vbhtml内容页面,这些页面是由定制CMS管理的数据库填充的。这些页面的内容不经常更改(它们是主页,关于我们,它是如何工作的,FAQ类型页面),我想确保有效地缓存内容以防止不必要的数据库调用。我认为这是半动态内容。
缓存页面的最佳方法是什么,只有在内容发生变化时才从数据库中获取?这可以在IIS中设置还是应该在代码中完成?
感谢。
答案 0 :(得分:1)
我将通过说我绝不是缓存方面的专家来说明这一点,以下只是代表我对你的问题的看法和想法。
首先,根本不使用缓存的情况。通过使用缓存,我们基本上将CPU和I / O时间换成内存占用。如果前者是溢价而你有后者,这是一个明显的胜利。当然,除了内存使用之外,它还会产生另一个代价:代码复杂性。缓存系统当然不必过于复杂,但我一直认为,您可以编写的最佳代码通常是您可以编写的最简单的代码。我个人对此事的看法是,在考虑实施动态资源缓存之前,应该每分钟多次请求这些资源(或者页面应该计算极其昂贵的CPU或I / O)。如果代码不经常执行,我会说一个简单的CMS数据库每次都会遇到一些内容,因此不值得为代码库添加额外的故障点。
尽管如此,并且继续假设您仍希望在您的网站上实现某种形式的基本缓存系统,Web Pages提供了一些简单但强大的内置工具。这是一个很好的教程:
我询问CMS是否使用相同项目的原因是,当您编辑特定内容时,可以轻松地使编辑器直接使缓存无效/重新加载缓存,这有时非常方便。在立即显示编辑的同时,您可以使数据更具持久性。一个简单的系统,前端页面在缓存为空时从数据库加载内容(并在缓存时将其存储在缓存中)与一个使其无效和/或重新加载它的编辑器听起来对我来说是理想的,如果你决定继续实施缓存。