从控制台应用程序输出缓存一个站点

本文关键字:一个 站点 控制台 应用程序 输出 缓存 | 更新日期: 2023-09-27 18:01:39

我想运行一个控制台应用程序,在所有输出缓存页面上调用一个网站,以便所有缓存的页面将为用户缓存。当使用浏览器的页面缓存正确,但我希望能够运行一个功能,为用户缓存所有的页面。

我使用new System.Net.WebClient().DownloadString("http://url");,但使用此调用时页面不会缓存。

缓存属性

[ChildActionOutputCache(("CacheAll"), Location = OutputCacheLocation.Server)]

属性函数
public class ChildActionOutputCacheAttribute : OutputCacheAttribute
    {
        public ChildActionOutputCacheAttribute(string cacheProfile)
        {
            var settings = (OutputCacheSettingsSection)WebConfigurationManager.GetSection("system.web/caching/outputCacheSettings");
            var profile = settings.OutputCacheProfiles[cacheProfile];
            Duration = profile.Duration;
            VaryByParam = profile.VaryByParam;
            VaryByCustom = profile.VaryByCustom;
        }
    }

网络。配置属性

 <caching>
      <outputCacheSettings>
        <outputCacheProfiles>
          <add name="CacheAll" 
               duration="43200"
               location="Server"
               varyByParam="*"/>
        </outputCacheProfiles>
      </outputCacheSettings>
    </caching>

从控制台应用程序输出缓存一个站点

我知道这是一个古老的问题,但对于其他人来说,谷歌为什么输出缓存不能为他们的控制台应用程序发出的请求工作-答案是cookie。

你的请求没有cookie,服务器的响应有新的cookie -所以它不缓存输出。

使用这个答案中的代码来发出请求,一切都会缓存OK: https://stackoverflow.com/a/3892075

我所要做的就是向我的应用程序的主页发出请求。这将对会话进行排序,并返回会话cookie。然后将这些cookie添加到后续请求中(添加到我想要缓存的页面),并且一切都如预期的那样工作。