1. 程式人生 > >修改hosts不立即生效原因分析

修改hosts不立即生效原因分析

real 專註 開始 image 下載 when 顯示 方法 做了

我們經常也遇到修改hosts不生效的情況,而且有時生效,有時不生效的情況也有發生,這到底是為什麽呢?

起:DNS緩存機制

關於DNS緩存的機制,有一篇非常詳細的文章What really happens when you navigate to a URL。

簡單來說,一條域名的DNS記錄會在本地有兩種緩存:瀏覽器緩存和操作系統(OS)緩存。在瀏覽器中訪問的時候,會優先訪問瀏覽器緩存,如果未命中則訪問OS緩存,最後再訪問DNS服務器(一般是ISP提供),然後DNS服務器會遞歸式的查找域名記錄,然後返回。

DNS記錄會有一個ttl值(time to live),單位是秒,意思是這個記錄最大有效期是多少。經過實驗,OS緩存會參考ttl值,但是不完全等於ttl值,而瀏覽器DNS緩存的時間跟ttl值無關,每種瀏覽器都使用一個固定值

。 這裏有一篇文章,做過詳細的測試Why Web Browser DNS Caching Can Be A Bad Thing:

技術分享

後來我也做過測試,Mac下Chrome(23.0.1271.101)的DNS緩存時間是1分鐘。Safari下DNS緩存時間大約為10秒。


解:hosts文件修改的原理

那麽在修改hosts文件之後,發生了什麽事情呢?這裏不妨先提提Chrome下的一個工具:chrome://net-internals/#dns。這裏列出了目前系統中的DNS緩存和Chrome中使用的情況。通過這個工具,可以看到: 在修改hosts文件後,所有OS中DNS緩存會被清空,而瀏覽器緩存則不發生變化。

網上盛傳chrome://net-internals/#dns下的"Clear Host Cache"可以清空DNS緩存,這裏博主做了一個測試,這裏清空的僅僅是OS的緩存,而並非瀏覽器DNS緩存。當某條DNS記錄顯示"Expired"的時候,才表示瀏覽器DNS緩存已經被清除。所以使用Clear Host Cache其實是沒有用的。

那麽回到最初的問題上來,為什麽修改hosts文件之後,有時會立刻生效,有時卻一直不生效呢?其實原因很簡單,這是因為瀏覽器緩存的過期時間,是從某個域名上次查詢DNS記錄開始計算的。

例如:我00秒的時候使用chrome訪問過www.google.com.hk,此時瀏覽器DNS緩存產生,然後我修改了hosts文件,將www.google.com.hk指向本地127.0.0.1,然後在05秒的時候嘗試再次訪問這個地址,因為瀏覽器DNS緩存未過期,所以hosts修改無法體現出來。

另一種情況下,我很久都沒有訪問www.baidu.com了,然後我修改了hosts文件,將其指向127.0.0.1,這時因為瀏覽器沒有DNS緩存,所以會查詢操作系統中的DNS緩存,結果此時hosts文件生效!

前面也提到,Safari的瀏覽器DNS緩存時間大約為10秒,所以一般調試程序的時候,很多人都習慣修改hosts後,用Safari來調試,因為大部分情況下,修改hosts之後,瀏覽器DNS緩存已經失效了。

那麽怎麽主動清除瀏覽器DNS緩存呢?博主目前也沒有找到辦法,測試過Chrome下的“清除緩存”選項,發現沒有起到期望的效果。

那麽,就請在修改hosts之後,耐下心來,稍等幾十秒吧。

這裏提供一個google最新hosts更新網址:http://whosmall.com/?post=148

寫在最後:FOR Freedom 看看外邊的世界,以及IT這一行,少不了去Google查資料,最後,安利一些速器代理。

加速器推薦 免費方案 付費方案 官方網站
一枝紅杏加速器 免費方案暫無,穩定高速 輸入8折優惠碼wh80,年付只需80元/年 官網直達http://whosmall.com/go/yzhx
安雲加速器 最好用的外貿VPN 最低¥30/月 官網直達http://whosmall.com/go/ay
LoCo加速器 每天免費2小時 最低¥15/月 官網直達http://whosmall.com/go/loco

轉自 SUN‘S BLOG - 專註互聯網知識,分享互聯網精神!

相關閱讀Mac 系統上如何用 LaunchBar 一鍵下載網頁上的所有文件?

相關閱讀MacOS 如何用 LaunchBar 一鍵上傳文件至 Google Drive?

相關閱讀最好用的 Mac App 快速啟動及切換工具:Manico 2.0

相關閱讀我為什麽選擇 Window Tidy 作為 MacOS 分屏工具?

相關閱讀Chrome 擴展 Stylish :給不喜歡某個網站一鍵「換膚」

相關閱讀將 QQ 音樂、網易雲音樂和蝦米音樂資源「整合」一起的Chrome 擴展Listen 1

相關閱讀8 個「新標簽頁」Chrome 擴展: 教你把 New Tab 頁面玩的溜溜溜

相關閱讀7 款實用 Chrome 擴展推薦:幫你提升 Chrome 使用體驗

相關閱讀無擴展就不是 Chrome 了:15 款優質的Chrome 擴展推薦給大家

相關閱讀12 款不能少的使網頁瀏覽獲得的最佳體驗Chrome 擴展

相關閱讀5 款可以帶來幸福感的 Chrome 擴展

相關閱讀: 對程序員有用:2017最新能上Google的hosts文件下載及總結網友遇到的各種hosts問題解決方法及配置詳解

相關BLOG:SUN’S BLOG - 專註互聯網知識,分享互聯網精神!去看看:www.whosmall.com

原文地址:http://whosmall.com/?post=475

修改hosts不立即生效原因分析