Caching 缓存非';在IIS7环境中,它不是真正动态的

Caching 缓存非';在IIS7环境中,它不是真正动态的,caching,iis-7,asp-classic,windows-server-2008,Caching,Iis 7,Asp Classic,Windows Server 2008,好的,我有一个旧的ASP经典网站。我已经决定通过每天缓存数据来减少大量的DB调用。我们的站点数据是只读的,并且变化非常缓慢。我认为,根据我们的网站使用情况,我将能够通过查询字符串为每天的每次访问缓存页面,而不会影响我们的服务器 我的第一个想法是使用输出缓存,但我马上发现的问题是,直到生成第三个页面请求,我才获得任何性能。我使用SQL探查器验证了这一点,但我不知道为什么 我的第二个想法是添加这个ObjPageCache include文件,因为经过一些研究,我发现这可能会导致比它可能解决的问题更多

好的,我有一个旧的ASP经典网站。我已经决定通过每天缓存数据来减少大量的DB调用。我们的站点数据是只读的,并且变化非常缓慢。我认为,根据我们的网站使用情况,我将能够通过查询字符串为每天的每次访问缓存页面,而不会影响我们的服务器

我的第一个想法是使用输出缓存,但我马上发现的问题是,直到生成第三个页面请求,我才获得任何性能。我使用SQL探查器验证了这一点,但我不知道为什么

我的第二个想法是添加这个ObjPageCache include文件,因为经过一些研究,我发现这可能会导致比它可能解决的问题更多的问题


我希望在座的人会告诉我,自2002年以来,向同一台服务器发送ServerXMLHTTP或WinHTTP请求的问题已通过Microsoft解决。

根据数据的维护方式,您可以选择多种缓存方式

如果您的数据被更改并保存在一个地方,您可以选择生成一个html文件,将其保存到服务器磁盘并在链接中引用。这将要求运行站点的进程具有写访问权限(例如网络服务)。这将生成快速页面,因为服务器提供这些页面,而不需要任何scriptingengine参与

另一个选项是将数据读入一个DomDocument,存储在应用程序对象中,并在需要它的页面上引用它(从而将往返保存到数据库)。您可以将两个时间戳与缓存的数据放在一起(一个用于cachingtime,另一个用于数据库中数据的更改时间)。时间戳将允许快速检查缓存数据的过时性:缓存的时间戳数据库时间戳=>刷新数据;否则,请使用缓存数据。关于这种方法需要注意的一点是,应用程序不接受多线程对象以外的对象,因此您必须使用MSXML2.FreeThreadedDomDocument.6.0

就个人而言,我更喜欢最后一个,因为它允许更动态的使用,并且我不必担心运行我的站点的进程的写访问权限(这可能会带来安全风险)