IIS可以从RAM中提供最常用的静态文件吗?

时间:2009-04-03 18:41:32

标签: apache iis caching webserver windows-server-2008

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

更新:mod_mem_cache中的Apache Caching Guide似乎是我正在寻找的。 IIS中的任何等价物?

感谢。

7 个答案:

答案 0 :(得分:3)

即使IIS实际上没有设置为自行执行缓存,对于仅从磁盘加载并通过线路发送的真实静态文件(即图像,.css,.js),您可能会结束使用内置于Windows本身的内存文件缓存。在任务管理器中,您会注意到物理内存部分中的“系统缓存”指标;它显示了操作系统用于缓存的空间大小。因此,只要您说的是真正的静态文件,就不需要添加显式缓存。

编辑:
有关更多详细信息,请参阅以下有关Windows缓存的几个链接(您可能可以通过Google找到更多信息):

答案 1 :(得分:2)

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

答案 2 :(得分:2)

这里有一些关于IIS 6.0的文件缓存:http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/a0483502-c6da-486a-917a-586c463b7ed6.mspx?mfr=true。正如大卫所说,IIS可能已经为你做了这件事。

IIS 7.0 Output Caching

IIS 6.0输出缓存中包含IIS 6.0文件缓存行为。如果默认超时似乎太短,您可以define your own rulesKernel Caching利用操作系统缓存。

答案 3 :(得分:1)

如果有大量RAM

,请设置RAM磁盘

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

这些数据在靴子之间不安全。

此外,我运行一个大型IIS站点并提供大量静态文件。 Windows文件缓存很好,我在网络延迟方面遇到了更多问题。时间到第一个字节e.t.c.我的磁盘永远不受约束。但是如果你有一个已知的问题,ram磁盘将有所帮助。

答案 4 :(得分:1)

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

此外,您可以为文件设置一个asp.net处理程序(* .ashx),以使用ASP.Net中内置的缓存。它会首先尝试从缓存中提供服务,并且只在需要时才加载它们。这样做的好处是,如果文件可能偶尔会发生变化,您可以随时轻松地使缓存过期,并允许IIS重新声明该内存,如果它确定目前还需要更多其他东西。

答案 5 :(得分:1)

在ASP.NET中:

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

这就是说,并不是说ASP解决方案是最好的,而是IIS服从缓存指令,可以选择缓存在RAM中。

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

答案 6 :(得分:0)

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