jnlyu
狐狸大王
狐狸大王
  • UID10304
  • 注册日期2005-12-04
  • 最后登录2015-06-17
  • 发帖数304
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:8198回复:27

Firefox 4.0 中緩存機制的重大改進

楼主#
更多 发布于:2011-02-04 12:35
Mozilla 官方看來是注意到「硬碟緩存」的重要性了

原本 Number of entries 的限制為 8192
從 4.0 開始,提升兩倍變成 16384

現在每小時版的 beta 12,似乎更加大了上限值 (應該是之前這個版本就開始)
以我自己的使用情況是目前數值為 43906
使用硬碟空間 660M 左右 (在選項裡面開啟緩存管理機制,上限1G)
不知道是不是已經變成無上限了

其他瀏覽器的快取機制如何不是很清楚
但在網路資料快取的改進上 Firefox 或許領先了一步

PS.沒有比從硬碟直接抓網頁資料來的更快的技術了
   之前因數量上的限制,容易將「還可再利用」的網頁資料覆蓋過去 (圖片、js、txt)
   所以整個網頁的讀取就要重新整個 running 一遍 (封包千里迢迢跑來跑去)
   畢竟現在硬碟便宜,拿個 5G ~ 10G 做快取也不過份

PS .Cache 資料夾的結構也有變化,原本是把資料壓縮後直接放進去不分類
   現在貌似變成跟 Squid Cache 一樣,建立一堆資料夾下去分再放進去
   不知道這是不是比較有效率方式?
AppNavi手机应用官方微博 介绍最新的密室逃脱游戏!
http://weibo.com/appnavi
kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2022-09-22
  • 发帖数9186
  • 经验397枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
1楼#
发布于:2011-02-04 12:35
Cache文件夹使用折叠法确实是个不错的主意。
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
msky
千年狐狸
千年狐狸
  • UID14649
  • 注册日期2006-09-21
  • 最后登录2023-04-03
  • 发帖数2959
  • 经验166枚
  • 威望0点
  • 贡献值12点
  • 好评度9点
  • 社区居民
2楼#
发布于:2011-02-04 12:35
装好firefox的第一件事情,选项——高级——网络——脱机储存——勾上无视自动缓存管理,默认是1G
idragonet
千年狐狸
千年狐狸
  • UID15658
  • 注册日期2006-11-12
  • 最后登录2017-11-15
  • 发帖数2642
  • 经验162枚
  • 威望1点
  • 贡献值74点
  • 好评度118点
  • 社区居民
3楼#
发布于:2011-02-04 12:35
msky:装好firefox的第一件事情,选项——高级——网络——脱机储存——勾上无视自动缓存管理,默认是1G回到原帖

那个是网站功能使用的脱机储存。
amad
小狐狸
小狐狸
  • UID33829
  • 注册日期2010-08-29
  • 最后登录2021-04-30
  • 发帖数53
  • 经验25枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
4楼#
发布于:2011-02-04 12:35
browser.cache.disk.capacity ?
msky
千年狐狸
千年狐狸
  • UID14649
  • 注册日期2006-09-21
  • 最后登录2023-04-03
  • 发帖数2959
  • 经验166枚
  • 威望0点
  • 贡献值12点
  • 好评度9点
  • 社区居民
5楼#
发布于:2011-02-04 12:35
我记得b5的时候这个选项是默认勾上的,而且默认是250M,不知道从哪个版本开始,这个选项默认就不勾上了。

某天用b5的时候感觉速度好像比b10要快,经过比较原来b5这个选项是默认勾上的,而b10没有。后来把b10也勾上了,感觉浏览速度快了很多,不知道是不是心理作用。
xf_mao
狐狸大王
狐狸大王
  • UID31861
  • 注册日期2010-01-29
  • 最后登录2017-09-18
  • 发帖数357
  • 经验19枚
  • 威望0点
  • 贡献值4点
  • 好评度1点
  • 社区居民
6楼#
发布于:2011-02-04 12:35
那个选项到底要不要钩上呢?“无视自动内存管理”
since 2005
jnlyu
狐狸大王
狐狸大王
  • UID10304
  • 注册日期2005-12-04
  • 最后登录2015-06-17
  • 发帖数304
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
7楼#
发布于:2011-02-04 12:35
勾上之後貌似緩存的資料保存數量就沒有上限,長遠來看是有幫助的,原因在一樓。
AppNavi手机应用官方微博 介绍最新的密室逃脱游戏!
http://weibo.com/appnavi
reg001
小狐狸
小狐狸
  • UID31768
  • 注册日期2010-01-25
  • 最后登录2020-03-02
  • 发帖数33
  • 经验16枚
  • 威望0点
  • 贡献值10点
  • 好评度1点
8楼#
发布于:2011-02-04 12:35
在哪 设置?找不到“无视自动缓存管理”选项。
kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2022-09-22
  • 发帖数9186
  • 经验397枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
9楼#
发布于:2011-02-04 12:35
我记得关于这个讨论过不少次,我自己也试过:Firefox似乎比较倾向于只要有网络连接,就去服务器下载一份新的内容,而不使用本地缓存。

另一方面,除非你看的网页是基本上不更新的网页,否则还是得要浏览器去下载更新了的内容。那么我举这样一个例子:有一张网页上的某一部分内容有更新(比方说改了一个字),其余大部分(例如很占带宽的图片)则没有。那么你下次访问这个网站的时候,浏览器是如何判断的?是只下载更新过的文字,还是连图片也重新下载一次?如果是前者的话,缓存大的确是有好处的(如果用户的网速还比较慢就更好)。

--------------
我对楼主说的"用5~10g"来做缓存持惊讶态度,我不知道这样会有什么特别的好处。缓存的内容是跟网站挂钩的,如果在a站点和b站点有一张一模一样的图片,我推测Firefox应该还是保存两份缓存文件(何况Firefox用的还不是真实的文件名),并且肯定要在哪里记录下"这张是A站的,这张是B站的",时间长了,这些信息就会越来越多,下次再打开某个网站时,Firefox就要在10多g的空间中匹配以确定"这张图片是不是缓存过了?"这难道会不拖慢速度?
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
jnlyu
狐狸大王
狐狸大王
  • UID10304
  • 注册日期2005-12-04
  • 最后登录2015-06-17
  • 发帖数304
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
10楼#
发布于:2011-02-04 12:35
待過 Yahoo 跟 Google 的工程師也認為用 5 ~ 10G 保存緩存不過分
http://www.stevesouders.com/blog/2010/0 ... r-caching/

另外我認為應該是匹配 URL 地址,這樣才科學,針對不同的網站相同的圖片
直接從硬碟讀取無疑是最有效率的做法,緩存的搜尋速度應該比想像中的還要快
以老牌的快取服務企 Squid Cache 為例
通常在 0.01 秒的範圍左右即可命中並返回目標物件給瀏覽器 (緩存 10G 以上)
相信 Firefox 這方面的技術應該不會差 Squid 太多 (結構也越來越像了)

我去年開始使用 Squid Cache 後,目前 Squid 的命中率約 33% ~ 35% 左右 (僅一個人使用)加上 Firefox 本身的快取,應該超過 50%
這證明了使用快取對瀏覽網頁是非常高效的手段之一
也就是有二分之一以上的東西都是直接從硬盤上抓回來的

上面 Google 工程師的文章也提到目前瀏覽器對緩存的使用率遠遠低於平均值
也就是緩存的「再利用率」不夠,如果能提高網民對緩存的使用率,相信對
整個網路會有正面的幫助,最直接的就是減少不必要的流量封包
AppNavi手机应用官方微博 介绍最新的密室逃脱游戏!
http://weibo.com/appnavi
msky
千年狐狸
千年狐狸
  • UID14649
  • 注册日期2006-09-21
  • 最后登录2023-04-03
  • 发帖数2959
  • 经验166枚
  • 威望0点
  • 贡献值12点
  • 好评度9点
  • 社区居民
11楼#
发布于:2011-02-04 12:35
reg001:在哪 设置?找不到“无视自动缓存管理”选项。回到原帖


英文版吗?option——advanced——network—— 有一个默认灰色的1024 MB的选项,勾上就变成可更改的了。
kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2022-09-22
  • 发帖数9186
  • 经验397枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
12楼#
发布于:2011-02-04 12:35
估計是B11才有的。
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
arch7819
火狐狸
火狐狸
  • UID30890
  • 注册日期2009-10-29
  • 最后登录2011-02-19
  • 发帖数153
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
13楼#
发布于:2011-02-04 12:35
个人用户, 使用 5G 缓存毫无必要.

HTTP 本身提供了 Expires, ETags, Last-Modified, Cache-Control 作缓存的相关控制.
视频这类大型文件只会使用一遍的通常都会有 Cache-Control: no-cache, 因为缓存它的性价比太低.

缓存的通常是图片, 脚本, 样式表等这些小的静态文件.
如果这些文件达到了5G, 那么我可以肯定其中99%的实体都是过期的,
缓存一个过期的项目毫无意义.

缓存查找使用哈希, 代价几乎为零的, 这个不需要担心. 需要担心的是缓存的命中比例, 如果1G的缓存只被命中了100K, 很明显还不如不去缓存.
 
比较好的解决方案是使用两代缓存, 第一代捕获, 第二代存储, 使用锁相的算法控制容量和命中的平衡.
但是这类算法通常只使用在比较苛刻的限制环境下的, 比如java代码运行时编译.
jnlyu
狐狸大王
狐狸大王
  • UID10304
  • 注册日期2005-12-04
  • 最后登录2015-06-17
  • 发帖数304
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
14楼#
发布于:2011-02-04 12:35
arch7819:个人用户, 使用 5G 缓存毫无必要.

HTTP 本身提供了 Expires, ETags, Last-Modified, Cache-Control 作缓存的相关控制.
视频这类大型文件只会使用一遍的通常都会有 Cache-Control: no-cache, 因为缓存它的性价比太低.

缓存的通常是图片, 脚本, 样式表等这些小的静态文件.
如果这些文件达到了5G, 那么我可以肯定其中99%的实体都是过期的,
缓存一个过期的项目毫无意义.

缓存查找使用哈希, 代价几乎为零的, 这个不需要担心. 需要担心的是缓存的命中比例, 如果1G的缓存只被命中了100K, 很明显还不如不去缓存.
 
比较好的解决方案是使用两代缓存, 第一代捕获, 第二代存储, 使用锁相的算法控制容量和命中的平衡.
但是这类算法通常只使用在比较苛刻的限制环境下的, 比如java代码运行时编译.
回到原帖


所以我才架了個 Squd 緩存伺服器,這個伺服器可以控制各類物件緩存的時間
原則上是讓圖片、腳本類保存較長的時間
讓 txt、php、html 等需及時更新的頁面保存較短時間或者直接使用頁面默認的時間

上面也提到了,我一個人用,Squid 有 30% 左右的命中率,加上 Firefox 本身的快取
加總起來應有 50% 以上,也就代表平均一半的資料是直接從硬盤上抓取的

以一個人,短時間內的上網體驗來看,5G 的確是很多,但長期下來
以 80/20 法則的觀點來看,現階段的瀏覽器緩存的機制並沒有做到最高效的緩存處理,除了空間的限制以外
另外一個就是緩存的算法,也就是什麼東西該緩存什麼不該
又該緩存多久時間等等,而這方面,Firefox 4.0 貌似進步不少。
AppNavi手机应用官方微博 介绍最新的密室逃脱游戏!
http://weibo.com/appnavi
上一页
游客

返回顶部