有没有办法以编程方式填充asp.net输出缓存?我已经调查了缓存API,似乎找不到明显的方法来做到这一点。有没有人尝试过这样的东西?如果是这样,你使用了什么方法?
答案 0 :(得分:5)
我去年对此进行了一些考虑,并最终得出结论认为这对案件来说并不重要,但如果它对您的网站很重要,那么您只需要从Application_Start之类的地方调用网页(之后)所有代码都已运行)但你不应该就此停止!
缓存最终会过期,并且为了避免在任何客户端请求该页面之前设置某种方式再次缓存页面。
使outputcache依赖于缓存中的其他对象并设置过期回调。
因此,当该缓存对象到期时,您的页面也会过期,您应该对要重新缓存的页面发出http请求,等等。
我正在回答这个问题,但是我脑子里仍然有许多努力和问号引导我建议不要经历这个......
only kind of dependency you may set in outputcache is sql dependency。如果需要,可以使用它,但如果您需要将outputcache依赖于某个其他业务对象,那么这可能会变得非常困难。我可以告诉你,你可以设置一个数据库对象,并依赖你的数据库,并使用某种计时器自己使用它。
男人,我写的越多,我找到的解决方案越多和困难!我不能为一些不值得你宝贵时间的东西写一本书。请相信我,对此的有用性几乎为零。
答案 1 :(得分:1)
正如其他人所建议的那样,启动缓存就像请求缓存的页面一样简单。当然,如果您以编程方式执行此操作,它将仅请求HTML而不是所有链接的资源(CSS,JavaScript,Images ...),这是避免浪费带宽的好事。
对于许多网站而言,缓存的消耗最大性能损失的项目对于许多或所有页面都是通用的。例如,大型CMS或店面上的导航系统可以查询数据库并执行一系列渲染工作,然后可以为所有页面缓存这些工作。此外,ASP.net初始加载的一个重要部分是首次访问并加载到内存中的网站。即使在您的网站上调用单个页面也可以解决这两个问题,但没有什么可以阻止您制作URL列表并定期调用每个页面。
如果您的缓存策略设置为超时20分钟,则可能每17-18分钟请求每个页面一次。
以下是一些包含源代码的资源,可帮助您入门:
Good Simple Primer on requesting web URL in C#
Website Monitoring Windows Service
正如我之前提到的,您可以轻松地将这些扩展到要求所请求的数组或URL列表的“foreach”。