1

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

更新:Apache Caching Guide中的mod_mem_cache似乎是我正在寻找的。IIS中有任何等效的东西吗?

谢谢。

4

7 回答 7

3

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

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

于 2009-04-03T19:22:31.920 回答
2

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

于 2009-04-03T19:02:30.970 回答
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 输出缓存

IIS 6.0 文件缓存行为包含在 IIS 7.0 输出缓存中。如果默认超时时间太短,您可以定义自己的规则。内核缓存利用了操作系统缓存。

于 2009-04-03T19:18:49.993 回答
1

如果您有大量 RAM,请设置 RAM 磁盘

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

但是,此数据在两次启动之间并不安全。

我还运行一个大型 IIS 站点并提供大量静态文件。windows文件缓存很好,我在网络延迟方面遇到了更多问题。第一个字节的时间等我的磁盘永远不会绑定。但是如果你有一个已知的问题,ram disk 会有所帮助。

于 2009-04-03T18:45:29.810 回答
1

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

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

于 2009-04-03T18:46:23.783 回答
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 发出信号以缓存单个文件,方法是将内容到期时间设置为未来 1 天或更长时间。

于 2009-04-03T19:00:45.293 回答
0

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

于 2009-04-03T18:43:55.507 回答