2013-11-02 33 views
0

當我正在瀏覽Stackoverflow時,我觀察到我曾經訪問過的任何問題都以不同的顏色標記。然後我開始思考堆棧溢出如何檢測到這一點。瀏覽器用來檢測用戶訪問URL的算法

有人可以告訴我他們使用什麼算法,不僅可以通過不同的網站使用stackoverflow嗎?

可能是它們存儲的問題數在我的餅乾和解析cookie數據後,他們都能夠說,我訪問了這個問題。但是,如果我訪問過很多問題,這種方法可能嗎?

更新

正如每個人都有提到這是一個瀏覽器屬性,所以問題是他們如何記住這麼多的鏈接,他們使用存儲哪種算法和數據結構。

+0

哪種顏色?

+3

這也發生在其他所有網站上(儘管有些人決定讓「visited」顏色與「not visited」顏色相同,因此無法看到)。順便說一句,你真的認爲我們需要一個鏈接到Stackoverflow?我們在上面。馬上。 – delnan

+0

css'a:visited'或許 –

回答

4

實際上,它是您的用戶代理(例如瀏覽器),即記住訪問過的鏈接。然後,一個網站可以使用CSS來使其符合他們的喜好。

用戶代理通常顯示與先前訪問的鏈接不同的未訪問鏈接。 CSS提供僞類':link'和':visited'來區分它們。


至於你的問題的更新。查看一下Chrome source代碼就會產生一些散列表作爲數據結構。

另外,如果您的用戶代理是有興趣,無論是鏈接被訪問或沒有,你只需要計算指紋(如city hash)的URL和緩存與指紋的指紋進行比較鏈接在頁面上找到。

即使你將訪問一個新的URL每10秒了整整一個月,並假設指紋會佔用40個字節,你會消耗大約只有10兆字節的內存。

+0

他們怎麼記得?你能給我一些提示嗎?謝謝。 – Trying

+0

大概有事情做與cookies –

+0

而就在[Chrome的源]瞥了一眼(https://code.google.com/p/chromium/codesearch#chromium/src/components/visitedlink/browser/visitedlink_master.h&sq=package:鉻&升= 391&RCL = 1383398702)。它似乎是一個哈希表,它偶爾會持續存在(取決於您的設置)。 – miku