NetScaler 的缓存行为完全由符合 RFC 2616 的策略驱动。当您缓存此类动态内容时,了解其中的哪一部分是用户特定的,这一点非常重要。任何可以被规范化的东西,例如,通过删除用户特定的信息(如 cookie),都可以被缓存。与“集成缓存”相对。HTTP 标头的重要性。
Via:在验证 NetScaler 是否参与缓存时,这是最有用的标头
If-Modified-Since:这是一个请求端标头,客户端用于请求缓存(如 NetScaler)在指定日期后发生更改时提供完整对象。在大部分情况下(这里讨论静态对象),这些对象不会发生变化,这将导致更小的 HTTP 304 响应 Not Modified 而不是更大的对象。
我们需要看到等式的两边。在发出 HTTP 请求的客户端上运行的 Netscaler 和 Fiddler 上的 NSTRACE。
要从 GUI 获取跟踪,请使用诊断部分中的启动新跟踪选项。数据包大小为零。输出到 PCAP,Wireshark 安装在工作站上。安装 WINSCP 或类似下拉 PCAP 文件。
SSH/CLI
https://developer-docs.citrix.com/projects/netscaler-command-reference/en/12.0/basic/nstrace/nstrace/
您可以通过 SSH/Putty 连接到 MGMT IP 上的设备或虚拟设备吗?
以 root 身份登录。
显示缓存统计信息 -detail 回车
在输出的下方,您将能够看到命中率是 304 与非 304 的百分比。当客户端指示他们已经拥有某个对象并且仅检查是否存在更新的副本时,HTTP 标头代码 304 在响应中而不是完整(更大)响应中发送。
显示统计数据如何随时间变化
显示缓存统计 -detail -ntimes 3 | grep 304
查看所有缓存的对象
显示缓存对象
左侧是定位器 ID
更深的潜水
显示缓存对象 -Locator
http://www.telerik.com/fiddler
查看来自服务器的客户端响应
Netscaler 将响应 Etag 标头和 Via 以告知缓存来自何处。
希望这是指向正确的方向