同事在檢查Apache日志的時候發現這種情況:名為“Chrome Privacy Preserving Prefetch Proxy”的爬蟲最近總是來訪問https://example.com/.well-known/traffic-advice 這個路徑,返回404或者403狀态碼,我去網上搜了一下,找到一些資料:
- Chrome Developer Blog: Private prefetch proxy in Chrome
- GitHub - Private Prefetch Proxy Explained: Traffic Advice
- Traffic Advice - A Collection of Interesting Ideas
- Traffic Advice: How to Configure Apache or Nginx for Chrome Privacy Preserving Prefetch Proxy
- What is .well-known/traffic-advice directory?
原來這是新版本Chrome浏覽器的網站内容預取功能,在Google搜索或者其它網站中告訴浏覽器即将可能去到的鍊接,Chrome浏覽器就去提前抓取鍊接的内容,當用戶真的去訪問的時候,就可以馬上打開了,不需要等待,可以大幅提升LCP和用戶體驗。
下圖摘錄自谷歌開發者博客官網,說明了Google搜索結果頁排名靠前的網站預取的過程:
作為網站管理員,可以在自己的網站中放置一個/.well-known/traffic-advice 文件來告訴Chrome浏覽器是否支持預取,這對我們這種以匿名用戶浏覽為主的網站來說,應該是允許的,并且為了用戶體驗以及SEO效果,也應該歡迎和支持這種預取的做法。
如果不設置這個文件,Chrome浏覽器就按照它自己的規定去做,至于它自己如何規定我們也不是非常了解,那就幹脆也設置一個這種文件吧,明确告訴Chrome浏覽器或者Google預取爬蟲我們是支持的。
設置的辦法還比較簡單,在網站的根目錄下的.well-known子目錄下放置一個traffic-advice文件,其内容如下:
[ { "user_agent": "prefetch-proxy", "google_prefetch_proxy_eap": { "fraction": 1 } } ]
要注意的是,這個文件的MIME類型需要是application/trafficadvice+json,以免混淆,可以在Apache配置文件中設置:
RewriteRule "^/.well-known/traffic-advice$" - [T=application/trafficadvice+json,END]
我們有的Web服務器還在用Apache 2.3,這樣設置沒有生效,摸索了一番,後來這樣設置成功的:
<IfModule rewrite_module> RewriteRule "^/\.well-known/traffic-advice.*$" - [L] </IfModule> <Location /.well-known/traffic-advice> ForceType application/trafficadvice+json </Location>
如果是Nginx參考上面鍊接中的用法。
评论