在對網站內容是否更新進行測試時,最常用的兩個工具就是wget和curl。不過兩個工具之間還是有一些小區別,甚至很可能影響到測試結論的。記錄一下:
1、在查看response-header的時候,我們習慣用的是wget -S和curl -I,但是:wget -S的時候,發送的是GET請求,而curl -I發送的是HEAD請求。如果測試url此時沒有被緩存過,直接使用curl -I進行測試,永遠都會返回MISS狀態。所以最好先wget一次,再用curl -I。
2、在查看下載速度時,常常發現wget和curl耗時差距較大。因為wget默認使用HTTP/1.0協議,不顯式指定–header=”Accept-Encoding: gzip,deflate”的情況下,傳輸的是未經壓縮的文件。而curl使用HTTP/1.1協議,默認接受就是壓縮格式。
3、在測試緩存層配置時,有時發現wget可以HIT的東西,curl卻始終MISS。對此可以開啟debug模式進行觀察跟蹤。
wget自帶有-d參數,直接顯示request-header;curl只有-D參數,在采用GET請求的時候,將response-header另存成文件,所以只好在squid上debug請求處理流程(當然也可以去網絡抓包),結果發現,curl的GET請求,都帶有”Pragma: no-cache”!而wget需要另行指定–no-cache才會。按照squid的默認配置,對client_no_cache是透傳的,所以curl永遠MISS,除非squid上配置了ignore-reload/reload-into-ims兩個參數,才可能強制HIT。
|