代码之家  ›  专栏  ›  技术社区  ›  Henry

IIS能否为RAM中最常用的静态文件提供服务?

  •  1
  • Henry  · 技术社区  · 16 年前

    我是否可以设置一个IIS服务器,以便它将最常用的静态文件(二进制)从磁盘缓存到RAM中,并根据请求从RAM提供服务?

    更新: mod_mem_cache 在里面 Apache Caching Guide 似乎是我要找的。在IIS中有类似的东西吗?

    谢谢。

    7 回复  |  直到 13 年前
        1
  •  2
  •   Corbin March    16 年前

    下面是一些关于IIS 6.0文件缓存的信息: http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/a0483502-c6da-486a-917a-586c463b7ed6.mspx?mfr=true . 正如大卫提到的,我可能已经为你做过了。

    IIS 7.0 Output Caching

    IIS 6.0文件缓存行为包含在IIS 7.0输出缓存中。你可以 define your own rules 如果默认超时看起来太短。 Kernel Caching 利用操作系统缓存。

        2
  •  3
  •   iammichael    16 年前

    即使实际上没有将IIS设置为单独执行缓存,对于仅从磁盘加载并通过网络发送的真正静态文件(即图像,.css,.js),也可能最终使用内置于Windows本身的内存文件缓存。在任务管理器中,您会注意到物理内存部分中有一个“系统缓存”度量;它显示了操作系统用于缓存的空间大小。所以,只要您谈论的是真正的静态文件,就不需要添加显式缓存。

    编辑:
    有关更多详细信息,以下是一些有关Windows缓存的链接(您可能可以在Google中找到更多链接):

        3
  •  2
  •   David    16 年前

    IIS应该已经这样做了。在.NET中,这是输出缓存将为您做的事情。

        4
  •  1
  •   Stewart Robinson    16 年前

    如果有大量的RAM,请设置一个RAM磁盘

    http://www.tweakxp.com/article37232.aspx 链接到一个免费的。让应用程序将相关文件复制到该驱动器,并将wwwroot设置为指向该位置。

    不过,在两次引导之间,这些数据是不安全的。

    我还运行了一个大型的IIS站点,提供了大量的静态文件。Windows文件缓存很好,我在网络延迟方面遇到更多问题。到第一字节E.T.C.的时间。我的磁盘从不绑定。但是,如果您有一个已知的问题,RAM磁盘会有所帮助。

        5
  •  1
  •   Joel Coehoorn    16 年前

    NateBross所说的可能是将它们保存在RAM中最可靠的方法,假设RAM磁盘是从启动时的某个实际磁盘动态创建的。

    另外 ,可以为文件设置一个ASP.NET处理程序(*.ashx),以使用内置于ASP.NET中的缓存。它将首先尝试从缓存中提供服务,并且只在需要时加载它们。这样做的好处是,如果文件偶尔发生更改,您可以随时轻松地使缓存过期,并且如果IIS决定现在需要更多的内存用于其他用途,则允许它重新声明该内存。

        6
  •  1
  •   John Gietzen    16 年前

    ASP.NET:

    Response.Cache.SetExpires(DateTime.Now.AddDays(1));
    Response.Cache.SetCacheability(HttpCacheability.Public);
    Response.Cache.SetValidUntilExpires(true);
    

    也就是说,不是ASP解决方案是最好的,而是IIS遵守缓存指令,可以选择在RAM中缓存。

    但是,如果ASP/ASP.NET不是一个选项,我相信您可以通过在将来设置内容过期1天或更多天,向IIS发出在“IIS管理”管理单元中缓存单个文件的信号。

        7
  •  0
  •   Nate CSS Guy    16 年前

    您可以设置一个RAM驱动器,然后将文件移动到那里,并在那里设置IIS虚拟目录。