我们正在平衡网关上使用ARR 2.5在Umbraco CMS上构建负载均衡的网站。我们正在尝试使用ARR磁盘缓存在网关上存储一些“重”页面,使其可以作为反向代理。
问题是某些页面没有存储在ARR缓存中,即使它们被ARR缓存控制规则覆盖,条件缓存始终为。 例如,我们有一条规则来始终将所有页面缓存在“about” - 文件夹中。
看起来像这样:
条件:始终
时间:60分钟
主机名:
网址:关于/ *
结果,我看到,有些页面是缓存的,但有一页不是。我在缓存文件夹中的磁盘上看不到它,“netsh http show CacheState”也没有显示它。我在浏览器中打开页面,看到与“about”文件夹中的其他文件相比,加载它需要更多时间。 缓存页面和非缓存页面之间的唯一区别在于目标后端服务器返回到网关的HTTP响应标头。
对于缓存页面,它们看起来像这样。
HTTP/1.1 200 OK
Cache-Control: max-age=3600
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Server: Microsoft-IIS/8.5
X-MiniProfiler-Ids: ["c101eed1-0a28-42ae-8428-5ac86c87dc10","969bfc9d-073c-419b-8141-447fd8a0d56c"]
X-Powered-By: ARR/2.5
Date: Sat, 05 Dec 2015 19:15:01 GMT
Connection: close
Content-Length: 34246
对于未缓存的页面,它们看起来像这样。
HTTP/1.1 200 OK
Cache-Control: max-age=3600
Content-Length: 255916
Content-Type: text/html; charset=utf-8
Expires: Sat, 05 Dec 2015 20:11:21 GMT
Last-Modified: Sat, 05 Dec 2015 19:11:21 GMT
Vary: *
Server: Microsoft-IIS/8.5
X-MiniProfiler-Ids: ["4901b30d-6738-4918-b04b-c7aac2dbc043","480638b0-11cd-481d-8fdc-2dd1689c0b8b","342f085b-61dc-45b4-8c76-4da634bacf63"]
X-Powered-By: ARR/2.5
Date: Sat, 05 Dec 2015 19:11:35 GMT
Connection: close
唯一的区别在于“Vary”,“Expires”和“Last-Modified”HTTP标头,后者恰好是目标后端服务器(位于网关后面)响应的时间。对于页面的每个HTTP响应,返回的时间都不同。
HTTP标头由Umbraco CMS / IIS生成,我们没有将它们配置为发送此类标头。实际上,页面的内容不会改变,但即使条件为Cache Always,ARR缓存也不会缓存页面。 ARR高速缓存控制规则肯定会被命中 - 我们看到它,因为来自“about”文件夹的其他页面被缓存。
我已经浏览了很多网站,试图找到一些关于ARR如何决定缓存哪些页面以及哪些页面没有缓存的网站,但没有什么可以澄清我的问题。
请帮我解决问题。
答案 0 :(得分:0)
我设法摆脱了目标后端服务器上的“Vary”HTTP标头,并且页面开始被缓存。