我正在本地机器上通过 ARR V2 尝试缓存解决方案。我有一个指向原始服务器的单节点服务器场。并且所有进入我本地机器的请求都将通过入站规则过滤,以定向到该服务器场。
在 ARR 缓存操作面板中,我添加了一个缓存控制规则,以始终将所有对象缓存 20 分钟,以针对所有定向到服务器场的请求。在这里,我想我已经覆盖了服务器场缓存操作面板中的内存缓存持续时间设置。(如我错了请纠正我)
IIS 上的其他一些设置包括:
用户模式和内核模式都禁用了输出缓存(对我来说有点奇怪,对象仍然缓存在内核缓存中)
在 ARR 缓存操作面板中禁用了服务器代理设置(我想这不会影响,因为服务器场也是代理)
完成所有设置后,我可以看到当我触发 Web 请求时,所有对象都缓存在我的磁盘缓存中。通过“netsh http show cache”我还可以观察到它们都缓存在内核缓存(ARR内存缓存)中。
但是,当我再次触发 Web 请求时,虽然请求不会发送到原始服务器,但对 html 和图像的请求并没有命中内存缓存,并且通过“netsh http show cache”我可以看到他们的命中数保持不变' 1' 和它们的 TTL 刷新以与它们相应的磁盘缓存对象同步。相比之下,css 和 javascript 总是会命中内存缓存,直到它们过期。在我的 MIME 列表中,它们都被视为静态文件,所以我不明白为什么它们在这里的行为不同。
然后我清除了磁盘缓存对象(主要和次要),并再次触发 Web 请求。现在(请注意,所有对象仍在内存缓存中),只有 html 和图像缓存在磁盘缓存中,而对 css 和 javascript 的请求仍然从内存缓存中提供,因此它们不会出现在磁盘缓存中。
我刚开始尝试 ARR 并没有完全理解这个概念。希望有人能帮忙。
提前致谢。