Squid Cache(簡稱為Squid)是一個流行的自由軟體(GNU通用公共許可證)的代理伺服器和Web緩存伺服器。



access.log結果編碼
相應於HTTP請求,下列標籤可能出現在access.log檔的第四個域。
TCP_HIT
Squid發現請求資源的貌似新鮮的拷貝,並將其立即發送到用戶端。
TCP_MISS
Squid沒有請求資源的cache拷貝。
TCP_REFRESH_HIT
Squid發現請求資源的貌似陳舊的拷貝,並發送確認請求到原始伺服器。原始伺服器返回304(未修改)回應,指示squid的拷貝仍舊是新鮮的。
TCP_REF_FAIL_HIT
Squid發現請求資源的貌似陳舊的拷貝,並發送確認請求到原始伺服器。然而,原始伺服器回應失敗,或者返回的回應Squid不能理解。在此情形下,squid發送現有cache拷貝(很可能是陳舊的)到用戶端。
TCP_REFRESH_MISS
Squid發現請求資源的貌似陳舊的拷貝,並發送確認請求到原始伺服器。原始伺服器回應新的內容,指示這個cache拷貝確實是陳舊的。
TCP_CLIENT_REFRESH_MISS
Squid發現了請求資源的拷貝,但用戶端的請求包含了Cache-Control: no-cache指令。Squid轉發用戶端的請求到原始伺服器,強迫cache確認。
TCP_IMS_HIT
用戶端發送確認請求,Squid發現更近來的、貌似新鮮的請求資源的拷貝。Squid發送更新的內容到用戶端,而不聯繫原始伺服器。
TCP_SWAPFAIL_MISS
Squid發現請求資源的有效拷貝,但從硬碟裝載它失敗。這時squid發送請求到原始伺服器,就如同這是個cache丟失一樣。
TCP_NEGATIVE_HIT
在對原始伺服器的請求導致HTTP錯誤時,Squid也會cache這個回應。在短時間內對這些資源的重複請求,導致了否命中。 negative_ttl指令控制這些錯誤被cache的時間數量。請注意這些錯誤只在記憶體cache,不會寫往硬碟。下列HTTP狀態碼可能導致否定 cache(也遵循於其他約束): 204, 305, 400, 403, 404, 405, 414, 500, 501, 502, 503, 504。
TCP_MEM_HIT
Squid在記憶體cache裏發現請求資源的有效拷貝,並將其立即發送到用戶端。注意這點並非精確的呈現了所有從記憶體服務的回應。例如,某些cache在記憶體裏,但要求確認的回應,會以TCP_REFRESH_HIT, TCP_REFRESH_MISS等形式記錄。
TCP_DENIED
因為http_access或http_reply_access規則,用戶端的請求被拒絕了。注意被http_access拒絕的請求在第9域的值是NONE/-,然而被http_reply_access拒絕的請求,在相應地方有一個有效值。
TCP_OFFLINE_HIT
當offline_mode啟動時,Squid對任何cache回應返回cache命中,而不用考慮它的新鮮程度。
TCP_REDIRECT
重定向程式告訴Squid產生一個HTTP重定向到新的URI(見11.1節)。正常的,Squid不會記錄這些重定向。假如要這樣做,必須在編譯squid前,手工定義LOG_TCP_REDIRECTS預處理指令。
NONE
無分類的結果用於特定錯誤,例如無效主機名。
相應於ICP查詢,下列標籤可能出現在access.log檔的第四域。
UDP_HIT
Squid在cache裏發現請求資源的貌似新鮮的拷貝。
UDP_MISS
Squid沒有在cache裏發現請求資源的貌似新鮮的拷貝。假如同一目標通過HTTP請求,就可能是個cache丟失。請對比UDP_MISS_NOFETCH。
UDP_MISS_NOFETCH
跟UDP_MISS類似,不同的是這裏也指示了Squid不願去處理相應的HTTP請求。假如使用了-Y命令行選項,Squid在啟動並編譯其記憶體索引時,會返回這個標籤而不是UDP_MISS。
UDP_DENIED
因為icp_access規則,ICP查詢被拒絕。假如超過95%的到某用戶端的ICP回應是UDP_DENIED,並且用戶端資料庫啟動了(見附錄A),Squid在1小時內,停止發送任何ICP回應到該用戶端。若這點發生,你也可在cache.log裏見到一個警告。
UDP_INVALID
Squid接受到無效查詢(例如截斷的消息、無效協定版本、URI裏的空格等)。Squid發送UDP_INVALID回應到用戶端。

附:HTTP回應狀態碼
Table 13-1列出了數字HTTP回應CODE和理由短句。注意Squid和其他HTTP用戶端僅僅關注這些數字值。理由短句是純解釋性的,不會影響回應的意義。對每個狀態碼,也提供了一個到RFC 2616的具體節的索引。注意狀態碼0和600是squid使用的非標準的值,不會在RFC裏提到。
Table 13-1. HTTP response status codes
Code  Reason phrase  RFC 2616 section
0  No Response Received (Squid-specific)  N/A
1xx  Informational  10.1
100  Continue  10.1.1
101  Switching Protocols  10.1.2
2xx  Successful  10.2
200  OK  10.2.1
201  Created  10.2.2
202  Accepted  10.2.3
203  Non-Authoritative Information  10.2.4
204  No Content  10.2.5
205  Reset Content  10.2.6
206  Partial Content  10.2.7
3xx  Redirection  10.3
300  Multiple Choices  10.3.1
301  Moved Permanently  10.3.2
302  Found  10.3.3
303  See Other  10.3.4
304  Not Modified  10.3.5
305  Use Proxy  10.3.6
306  (Unused)  10.3.7
307  Temporary Redirect  10.3.8
4xx  Client Error  10.4
400  Bad Request  10.4.1
401  Unauthorized  10.4.2
402  Payment Required  10.4.3
403  Forbidden  10.4.4
404  Not Found  10.4.5
405  Method Not Allowed  10.4.6
406  Not Acceptable  10.4.7
407  Proxy Authentication Required  10.4.8
408  Request Timeout  10.4.9
409  Conflict  10.4.10
410  Gone  10.4.11
411  Length Required  10.4.12
412  Precondition Failed  10.4.13
413  Request Entity Too Large  10.4.14
414  Request-URI Too Long  10.4.15
415  Unsupported Media Type  10.4.16
416  Requested Range Not Satisfiable  10.4.17
417  Expectation Failed  10.4.18
5xx  Server Error  10.5
500  Internal Server Error  10.5.1
501  Not Implemented  10.5.2
502  Bad Gateway  10.5.3
503  Service Unavailable  10.5.4
504  Gateway Timeout  10.5.5
505  HTTP Version Not Supported  10.5.6
6xx  Proxy Error  N/A
600  Unparseable Response Headers (Squid-specific)  N/A
假如Squid從原始伺服器沒有接受到任何回應,你可在access.log裏看到狀態碼0。假如Squid接受到的回應沒有包含HTTP頭部,就會出現狀態碼600。在少數情況下,某些原始伺服器僅發送回應body,而忽略了任何頭部。

access.log對端編碼
下列編碼可能出現在access.log的第9域。
NONE
這指明Squid對本次請求,不會與任何其他伺服器(鄰居或原始伺服器)通信。它通常與cache命中、拒絕請求、cache管理請求、錯誤、和所有的ICP查詢這些類型聯合出現。
DIRECT
Squid直接轉發請求到原始伺服器。該域的第2半部分顯示原始伺服器的IP位址,或主機名-假如禁止了log_ip_on_direct。
SIBLING_HIT
在姐妹cache返回ICP或HTCP命中後,Squid發送請求到姐妹cache。
PARENT_HIT
在父cache返回ICP或HTCP命中後,Squid發送請求到父cache。
DEFAULT_PARENT
Squid選擇該父cache,因為其在squid.conf的cache_peer行裏被標誌為default。
FIRST_UP_PARENT
Squid轉發請求到該父cache,因為它是位於已知活躍列表裏的第一個父cache。
FIRST_PARENT_MISS
Squid轉發請求到該父cache,它第一個回應ICP/HTCP丟失消息。換句話說,對這個特殊的ICP/HTCP查詢,在這個特殊時刻,被選中的父cache有最佳的往返時間(RTT)。注意標準RTT可能被人工矯正過,取決於cache_peer指令的weight選項。
CLOSEST_PARENT_MISS
Squid選擇該父cache,因為它報告到原始伺服器的RTT最低。這點僅在2個cache都啟動了netdb,並且原始伺服器(或在同一子網內的其他server)返回ICMP ping消息。
CLOSEST_PARENT
這點類似CLOSEST_PARENT_MISS,除了RTT計算不是來自ICP/HTCP回應消息外。代替的,它們來自Squid保留的更老的計算方式,例如netdb交換功能。
CLOSEST_DIRECT
Squid基於netdb演算法,轉發請求到原始伺服器。這點在滿足下述任何條件時發生:
•  1)在Squid和原始伺服器之間的RTT小於配置的minimum_direct_rtt值。
•  2)在Squid和原始伺服器之間的標準路由跳數少於配置的minimum_direct_hops值。
•  3)在ICP/HTCP回應裏返回的RTT值,指示Squid離原始伺服器近于任何其他鄰居。
ROUNDROBIN_PARENT
Squid轉發請求到該父cache,因為設置了round-robin選項,並且它有最低的使用計數器。
CD_PARENT_HIT
Squid基於cache摘要演算法(見10.7節)轉發請求到該父cache。
CD_SIBLING_HIT
Squid基於cache摘要演算法轉發請求到該姐妹cache。
CARP
Squid選擇該父cache,基於cache陣列路由協定演算法(見10.9節)。
ANY_PARENT
作為最後的手段,Squid選擇該父cache,因為沒有其他方法能選擇可行的下一跳。
注意大部分上述編碼可能以TIMEOUT_開頭,這表明在等待ICP/HTCP響應時發生超時。例如:
1066038165.382    345 193.233.46.21 TCP_MISS/200 2836          GET http://www.caida.org/home/../images/home.jpg          TIMEOUT_CLOSEST_DIRECT/213.219.122.19 image/jpeg
可使用icp_query_timeout指令來調整超時。
事例:
cat access.log|gawk ‘{print $11}’|sort|uniq -c|sort -nr
  15508 TCP_NEGATIVE_HIT:NONE 在對原始伺服器的請求導致HTTP錯誤時,Squid也會cache這個回應。在短時間內對這些資源的重複請求,導致了否命中。
  8212 TCP_IMS_HIT:NONE  用戶端發送確認請求,Squid發現更近來的、貌似新鮮的請求資源的拷貝。Squid發送更新的內容到用戶端,而不聯繫原始伺服器。(這指明Squid對本次請求,不會與任何其他伺服器(鄰居或原始伺服器)通信。)
  3771 TCP_HIT:NONE Squid發現請求資源的貌似新鮮的拷貝,並將其立即發送到用戶端。
  3468 TCP_MISS:DIRECT Squid沒有請求資源的cache拷貝。(Squid直接轉發請求到原始伺服器)
  2379 TCP_MEM_HIT:NONE  從記憶體的回應
  1876 TCP_DENIED:NONE 因為http_access或http_reply_access規則,用戶端的請求被拒絕了   全是錯誤位址鏈結
  1732 TCP_REFRESH_HIT:DIRECT Squid發現請求資源的貌似陳舊的拷貝,並發送確認請求到原始伺服器。原始伺服器返回304(未修改)回應,指示squid的拷貝仍舊是新鮮的。(Squid直接轉發請求到原始伺服器)
   708 TCP_CLIENT_REFRESH_MISS:DIRECT Squid發現了請求資源的拷貝,但用戶端的請求包含了Cache-Control: no-cache指令。Squid轉發用戶端的請求到原始伺服器,強迫cache確認。 (Squid直接轉發請求到原始伺服器)
     7 TCP_MISS:NONE Squid沒有請求資源的cache拷貝。(這指明Squid對本次請求,不會與任何其他伺服器(鄰居或原始伺服器)通信)