0

当我浏览 Stackoverflow 时,我观察到我之前访问过的所有问题都用不同的颜色标记。然后我开始思考堆栈溢出如何检测到这一点。

有人可以告诉我他们使用什么算法,不仅stackoverflow使用的可能是不同的站点吗?

可能是他们将问题编号存储在我的 cookie 中,并且在解析 cookie 数据后,他们能够说出我访问过的问题。但是,如果我访问过很多问题,这种方法是否可行?

更新

正如每个人都提到这是一个浏览器属性,所以问题是他们如何记住这么多链接,他们使用什么算法或数据结构来存储。

4

1 回答 1

4

实际上,记住访问链接的是您的用户代理(例如浏览器)。然后网站可以使用CSS来根据自己的喜好设置样式。

用户代理通常显示与以前访问过的链接不同的未访问链接。CSS 提供了伪类 ':link' 和 ':visited' 来区分它们。


至于你更新的问题。浏览Chrome 源代码会发现某种哈希表作为数据结构。

此外,如果您的用户代理只是对链接是否被访问感兴趣,您只需要计算 URL 的指纹(例如city hash)并将缓存的指纹与页面上找到的链接的指纹进行比较.

即使您在整个月内每 10 秒访问一个新 URL,并假设指纹会占用 40 个字节,您也只会消耗大约 10 MB 的内存。

于 2013-11-02T19:34:21.713 回答