C# asp.net mvc中未应用缓存

C# asp.net mvc中未应用缓存,c#,asp.net,asp.net-mvc-3,caching,C#,Asp.net,Asp.net Mvc 3,Caching,我需要在我的web应用程序中实现图像缓存,因为我的主页加载图像需要时间。我试着用不同的方法接球,但没有用 我添加了新的类名CacheFilterAttribute public class CacheFilterAttribute : ActionFilterAttribute { public int Duration { get; set; } public CacheFilterAttribute() { Duration

我需要在我的web应用程序中实现图像缓存,因为我的主页加载图像需要时间。我试着用不同的方法接球,但没有用

我添加了新的类名CacheFilterAttribute

public class CacheFilterAttribute : ActionFilterAttribute
{
    public int Duration
    {
    get;
    set;
    }

    public CacheFilterAttribute()
    {
    Duration = 60;
    }

    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
    if (Duration <= 0) return;

    HttpCachePolicyBase cache = filterContext.HttpContext.Response.Cache;
    TimeSpan cacheDuration = TimeSpan.FromSeconds(Duration);

    cache.SetCacheability(HttpCacheability.Public);
    cache.SetExpires(DateTime.Now.Add(cacheDuration));
    cache.SetMaxAge(cacheDuration);
    cache.AppendCacheExtension("must-revalidate, proxy-revalidate");
    }

}
它不适用。 然后,我尝试通过配置文件

<caching>
  <outputCacheSettings>
    <outputCacheProfiles>
      <add name="Cache1Hour" duration="3600" varyByParam="none"/>
    </outputCacheProfiles>
  </outputCacheSettings>
</caching>

仍不适用


请告诉我快速加载图像的可能方法

你的问题中有两个误解:

  • 当您装饰一个MVC操作时,如
    Home
    ,结果是,如果该页面以前被请求过,它将被缓存,服务器将不再运行该操作,而是直接返回上一次执行的缓存结果
  • 这些映像通常是直接从服务器提供的静态映像,根本不需要执行,并且与MVC缓存无关
  • 最后,图像被缓存在浏览器本身中。当浏览器请求图像时,它会从服务器获取图像,并通常将其缓存。如果它再次需要它,它将使用本地缓存,而不是从服务器请求它

    如果既不更改默认浏览器配置,也不更改默认服务器配置,则不会阻止浏览器缓存图像。但是请注意,如果服务器的响应包含一些标题,则可能会指示浏览器不要缓存图像。正如我所说的,这在默认情况下不会发生

    最后,在许多浏览器上,当您打开开发人员工具(调试器、控制台、HTML检查器…)时,缓存将自动禁用。您可以更改该配置。为了避免这种情况发生,您可以使用免费工具监控网络流量

    编辑
    如果图像加载缓慢,可能是因为您使用的是非常高分辨率的图像。如果是这种情况,请使用任何工具来降低分辨率,这样加载速度就会更快。如果对图像进行压缩,则可以使用不同级别的压缩来进一步减小其字节大小,而无需更改分辨率。有很多工具可以实现这一点,甚至在线工具。谷歌“图像优化器”。还有类似的自由软件。

    如何测试和检查缓存是否成功应用?如何将图像嵌入页面?我在Google Chrome浏览器的“网络缓存”选项卡中进行了检查。另外,您想要客户端缓存还是服务器端缓存,或者两者兼而有之?也许你可以在这里找到有用的线索:或者在这里:我只需要图像缓存,哪一个是最好的?我的主页有图像滑块,这些图像是静态的1)我正在本地测试我的代码,每当我重新加载页面时,它都会调用Action方法。这意味着这里不应用缓存。我的代码出了什么问题?2)我已经对图像进行了优化,但仍然缓慢加载问题图像,因此我尝试应用缓存。我的申请的在线链接
    <caching>
      <outputCacheSettings>
        <outputCacheProfiles>
          <add name="Cache1Hour" duration="3600" varyByParam="none"/>
        </outputCacheProfiles>
      </outputCacheSettings>
    </caching>