CN102411631A - 一种嵌入式浏览器磁盘缓存的方法 - Google Patents
一种嵌入式浏览器磁盘缓存的方法 Download PDFInfo
- Publication number
- CN102411631A CN102411631A CN2011104359062A CN201110435906A CN102411631A CN 102411631 A CN102411631 A CN 102411631A CN 2011104359062 A CN2011104359062 A CN 2011104359062A CN 201110435906 A CN201110435906 A CN 201110435906A CN 102411631 A CN102411631 A CN 102411631A
- Authority
- CN
- China
- Prior art keywords
- thread
- disk
- disk buffering
- resource
- browser
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及一种嵌入式浏览器磁盘缓存的方法,浏览器运行第一线程和第二线程,第一线程用于发起网络下载请求,第二线程用于磁盘缓存存储处理。该方法包含如下步骤:运行第一线程,由第一线程开启第二线程,并将第二线程置于阻塞状态;由第一线程根据网络下载请求获得网络资源信息后生成磁盘缓存事件并插入到磁盘缓存事件队列中;当第一线程下载结束后,由第一线程将第二线程置于运行状态,第二线程开始处理磁盘缓存事件队列中的磁盘缓存事件,并将网络资源信息存储到磁盘。根据本发明,可以提高资源的访问速度,增强用户上网体验,进一步提高了嵌入式浏览器性能。
Description
技术领域
本发明涉及嵌入式技术领域,特别涉及一种嵌入式浏览器磁盘缓存的方法。
背景技术
在嵌入式系统中,特别是作为三网融合终端的网络电视机顶盒中,嵌入式浏览器可能成为嵌入式系统最主要的应用软件,甚至有可能是唯一的直接支持与用户交互的应用软件。在这种情况下,嵌入式浏览器的访问速度直接影响到用户的体验效果。浏览器缓存,即本地存储用户访问过的信息,用于提高用户再次访问相关信息时的速度。
目前嵌入式浏览器缓存方面的技术有基于内存缓存处理技术和基于阻塞用户操作的磁盘缓存处理技术。
基于内存缓存处理技术是由嵌入式浏览器应用初期业务量小,硬盘容量少的应用场景决定的。随着三网融合产生了网络电视机顶盒等具有业务量多、硬盘容量大的嵌入式终端,因此导致目前仅采用内存进行网络资源缓存的嵌入式浏览器已经远远不能满足新的需求。嵌入式系统的资源非常有限,而嵌入式浏览器内存缓存一方面受限于系统能够提供的缓存空间大小,另一方面受限于内存缓存的非持久性,当一次访问的资源太多或浏览器重新启动时,访问过的网络资源就得重新下载。
基于阻塞用户操作的磁盘缓存处理技术的缺点在于处理缓存的时候会阻塞当前用户操作,从而影响用户上网体验。
发明内容
本发明的目的是提供一种高效可靠的嵌入式浏览器磁盘缓存方法,通过内存与磁盘的相互配合,提高网络资源的访问速度。
为实现上述目的,本发明提供了一种嵌入式浏览器磁盘缓存方法,浏览器运行第一线程和第二线程,第一线程用于发起网络下载请求,第二线程用于磁盘缓存存储处理,该方法包含如下步骤:运行第一线程,由第一线程开启第二线程,并将第二线程置于阻塞状态;由第一线程根据网络下载请求获得网络资源信息后生成磁盘缓存事件并插入到磁盘缓存事件队列中;当第一线程下载结束后,由第一线程将第二线程置于运行状态,第二线程开始处理磁盘缓存事件队列中的磁盘缓存事件,并将网络资源信息存储到磁盘。
根据本发明的方法,通过将缓存的处理与用户的操作分别处在不同的进程或线程中执行,从而避免了缓存的处理对用户操作造成阻塞,可以提高资源的访问速度,增强用户上网体验,进一步提高了嵌入式浏览器的性能。
附图说明
图1为本发明实施例嵌入式浏览器磁盘缓存的方法流程图。
图2为本发明实施例磁盘缓存检索表;
图3为本发明实施例缓存事件处理队列示意图。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
本发明是一种基于磁盘的嵌入式浏览器缓存方法实现的方案,其核心在于:本发明的嵌入式浏览器磁盘缓存的存储介质为磁盘;浏览器运行浏览器主线程和磁盘缓存存储线程,其中浏览器主线程用于网络资源的下载,磁盘缓存存储线程用于磁盘缓存存储处理;浏览器主线程进行网络资源下载操作时会阻塞磁盘缓存存储线程,磁盘缓存存储线程在缓存处理过程中不会阻塞用户操作;浏览器主线程的一个URL请求成功后,会将URL的应答头信息和应答数据组合成磁盘缓存事件插入到缓存事件队列中;下载结束,浏览器主线程解除对磁盘缓存存储线程的阻塞;磁盘缓存存储线程周期性获取磁盘缓存事件,并对事件进行处理;磁盘缓存存储线程从缓存事件中提取资源头信息、资源数据两部分存储到磁盘上,资源头信息文件中的内容用于对资源的有效性进行判断或验证,资源数据文件中的内容可以直接被作为资源来加载。
图1为本发明实施例嵌入式浏览器磁盘缓存的方法流程图。嵌入式浏览器运行第一线程和第二线程,其中第一线程对应于图1中的浏览器主线程,第二线程对应于图1中的磁盘缓存存储线程。浏览器主线程用于发起网络下载请求,执行步骤101-113。磁盘缓存存储线程用于磁盘缓存存储处理,执行步骤200-206。具体步骤如下:
在步骤101:流程开始,用户启动浏览器。
在步骤102:浏览器主线程和磁盘缓存存储线程被开启,浏览器主线程进入步骤103,磁盘缓存存储线程进入步骤200。
以下为浏览器主线程执行步骤:
在步骤103:浏览器主线程完成初始化工作后等待用户操作,当接收到用户的下载请求时,则进入步骤104;当接收到浏览器退出请求时,则进入到步骤112。
在步骤104:浏览器主线程向服务器发起下载请求,同时阻塞磁盘缓存存储线程。进入步骤105。
在一个例子中,浏览器主线程使用一个条件变量和控制锁,通过获取控制锁来改变条件变量值,磁盘缓存存储线程基于条件变量值被置于运行状态或阻塞状态。例如,当条件变量值为真时,磁盘缓存存储线程被置于运行状态;当条件变量值为假时,磁盘缓存存储线程被置于阻塞状态。
在步骤105:浏览器主线程判断当前页面是否可以直接使用,或者是否有缓存使用。如果用户请求访问的资源在磁盘缓存中,则进入步骤106,反之进入步骤107。
图2为本发明实施例磁盘缓存检索表。浏览器主线程通过哈希算法获得资源URL的哈希值,并将资源URL与哈希值构成的键值插入到磁盘检索表中,得到资源URL与磁盘缓存数据的映射关系,该磁盘缓存检索表的信息存储在磁盘缓存中,并且在浏览器启动时,由磁盘缓存存储线程导入到内存中。
当浏览器主线程访问资源URL时,以资源URL作为键值,从磁盘缓存检索表中查找,如果能找到相应的键值,则表明该资源存储在磁盘缓存上。
在步骤106:浏览器主线程根据HTTP协议使用本地缓存或者通过验证使用本地缓存。
在一个例子中,浏览器主线程通过读取磁盘缓存资源的头信息来对该资源的有效性进行判断或验证,或者向服务器发送验证信息,然后进入步骤108。
在步骤107:当用户请求访问的资源不在磁盘缓存中时,浏览器主线程则直接从服务器发起请求,然后进入步骤109。
在步骤108:浏览器主线程通过分析磁盘缓存有效性或者从服务器获得有效性验证,如果判断磁盘缓存资源有效,则进入步骤110,反之进入步骤107。
在步骤109:浏览器主线程将从服务器获得的网页数据、网页头信息后生成磁盘缓存事件,并插入到磁盘缓存事件队列中,当所有下载请求都结束时,则进入步骤111。
在步骤110:浏览器主线程从本地读取缓存资源,当所有的下载请求都结束时,进入步骤111,反之进入步骤104。
在步骤111:浏览器主线程渲染、并显示网页页面,同时解除对磁盘缓存存储线程的阻塞,进入步骤103。
在步骤112:浏览器主线程在浏览器退出时,释放资源,结束浏览器主线程,并向磁盘缓存存储线程发送终止信号,进入步骤113。
在步骤113:浏览器主线程等待磁盘缓存存储线程结束,当磁盘缓存存储线程结束后,浏览器主线程退出。
以下是磁盘缓存存储线程执行步骤:
在步骤200:初始化磁盘缓存。
在步骤201:磁盘缓存存储线程在浏览器主线程向服务器发起下载请求时,被置于阻塞状态,并在浏览器主线程所有下载请求结束,渲染、并显示页面后,其阻塞状态被解除,进入步骤202,当收到浏览器退出信号时,进入步骤205。
在步骤202:磁盘缓存存储线程循环访问磁盘缓存事件队列,同时检测磁盘缓存存储线程是否被阻塞,若被阻塞,则进入步骤201;反之,获取磁盘缓存事件,进入步骤203。
在步骤203:磁盘缓存存储线程判断缓存处理事件队列是否为空,若缓存处理事件队列非空,则读取缓存处理事件队列中的首事件,并对其进行处理;若缓存处理事件队列为空,则磁盘缓存存储线程自我阻塞,进入步骤201;反之,进入步骤204。
在步骤204:磁盘缓存存储线程处理磁盘缓存事件,将缓存资源存储到磁盘,并在内存中建立映射表和历史记录表,然后进入步骤202。
磁盘缓存存储线程在处理磁盘缓存事件时,首先根据HTTP协议及其缓存事件中服务器应答判断缓存事件中的资源是否可以缓存,如果可以缓存,则判断当前分配给磁盘缓存的磁盘空间是否足够,若磁盘空间足够,则直接将缓存资源头信息和资源数据存储到磁盘,建立缓存资源的检索信息;若磁盘空间不够,则自动清除磁盘中的部分缓存数据,为新的缓存资源提供磁盘存储空间。
表1是本发明实施例磁盘缓存资源最近使用记录表。磁盘缓存事件通过在内存中建立磁盘缓存资源最近使用记录,采用最近最少使用策略,结合资源最近使用时间点和资源类型来决定其在资源使用记录表中的位置,上述资源类型指网页的类型,如HTML、JavaScript、CSS和Image等。磁盘缓存资源最近使用记录通过采用红黑树数据结构来建立,资源最近被使用的时间越久,资源类型的优先级越低,资源在记录表中的位置越靠前。当需要清除磁盘缓存时,依据资源最近使用记录表,优先删除记录表的首资源,并及时将磁盘资源检索信息、磁盘资源最近使用记录信息存储到磁盘,当重新启动浏览器时,由磁盘缓存存储线程将相应的信息重新加载到内存中。
表1
资源类型 | 资源最近使用时间 | 优先级 |
HTML | 2011.01.15 | 1 |
JavaScript | 2011.02.16 | 2 |
CSS | 2011.03.17 | 3 |
image | 2011.04.01 | 4 |
在步骤205:磁盘缓存存储线程在收到浏览器退出信号时,保存缓存检索信息和历史记录,进入步骤206。
在步骤206:磁盘缓存存储线程终止,退出。
根据本发明实施例,由于是在URL请求下载结束后才生成磁盘缓存事件插入到磁盘缓存事件队列中,从而避免了由于每次收到服务器应答数据就将数据写入磁盘,减少了与磁盘的交互次数,提高了速度,同时避免了由于资源下载数据不全而存储的不完整的数据信息。由于本发明实施例的磁盘缓存存储和用户操作处于两个不同的线程中,避免了下载到数据后,存储缓存时对用户操作的阻塞,提高了用户的体验。
图3为本发明实施例缓存事件处理队列示意图。当一个URL请求下载成功后,浏览器主线程将从服务器获得的网页数据、网页头信息后生成磁盘缓存事件,并插入到磁盘缓存事件队列中。磁盘缓存存储线程读取缓存事件处理队列中的缓存事件进行处理,将缓存事件中相应的缓存资源存储到磁盘,并且建立资源的检索信息;当磁盘缓存事件队列为空时,磁盘缓存存储线程则自动处于阻塞状态。
由于本发明实施例的缓存事件的进队列操作和出队列操作运行在不同的线程,并且缓存事件的队列操作处于磁盘缓存存储线程中,不可能与缓存事件进队列同时发生,因此避免了对缓存事件队列的加锁操作,进一步提高了嵌入式浏览器的性能。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种嵌入式浏览器的磁盘缓存方法,其特征在于:所述浏览器运行第一线程和第二线程,所述第一线程用于发起网络下载请求,所述第二线程用于磁盘缓存存储处理,该方法包含如下步骤:
运行所述第一线程,由所述第一线程开启所述第二线程,并将所述第二线程置于阻塞状态;
由所述第一线程根据网络下载请求获得网络资源信息后生成磁盘缓存事件并插入到磁盘缓存事件队列中;
当所述第一线程下载结束后,由第一线程将所述第二线程置于运行状态,所述第二线程处理所述磁盘缓存事件队列中的磁盘缓存事件,并将所述网络资源信息存储到磁盘。
2.根据权利要求1所述的方法,其特征在于:所述第一线程使用一个条件变量和控制锁,通过获取所述控制锁来改变所述条件变量值,所述第二线程基于所述条件变量值被置于运行状态或阻塞状态。
3.根据权利要求1所述的方法,其特征在于:所述磁盘缓存事件包括所述网络资源的头信息和资源数据。
4.根据权利要求1所述的方法,其特征在于:所述第二线程处理所述磁盘缓存事件队列中的磁盘缓存事件,并将所述网络资源信息存储到磁盘的步骤包括将所述网络资源的URL与所述磁盘缓存的资源数据建立映射表。
5.根据权利要求1所述的方法,其特征在于:包括第二线程基于磁盘缓存资源历史记录表管理磁盘,根据所述资源最近使用的时间点和资源类型来建立磁盘缓存资源历史记录表。
6.根据权利要求5所述的方法,其特征在于:所述磁盘缓存资源历史记录表采用最近最少使用策略。
7.根据权利要求1所述的方法,其特征在于:所述资源类型包括HTML、JavaScript、CSS或Image中的一个或多个。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104359062A CN102411631A (zh) | 2011-12-22 | 2011-12-22 | 一种嵌入式浏览器磁盘缓存的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104359062A CN102411631A (zh) | 2011-12-22 | 2011-12-22 | 一种嵌入式浏览器磁盘缓存的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102411631A true CN102411631A (zh) | 2012-04-11 |
Family
ID=45913702
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011104359062A Pending CN102411631A (zh) | 2011-12-22 | 2011-12-22 | 一种嵌入式浏览器磁盘缓存的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102411631A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102724586A (zh) * | 2012-07-05 | 2012-10-10 | 百视通网络电视技术发展有限责任公司 | 基于iptv的页面缓存方法及系统 |
CN103399759A (zh) * | 2013-06-29 | 2013-11-20 | 广州市动景计算机科技有限公司 | 一种网络内容下载方法及装置 |
CN104424116A (zh) * | 2013-08-19 | 2015-03-18 | 中国科学院声学研究所 | 一种嵌入式浏览器磁盘缓存的方法及系统 |
CN104639588A (zh) * | 2013-11-14 | 2015-05-20 | 腾讯科技(北京)有限公司 | 一种文件下载方法、装置和系统 |
CN106713450A (zh) * | 2016-12-21 | 2017-05-24 | 广州优视网络科技有限公司 | 基于读写分离模式的下载提速方法及装置 |
CN107256180A (zh) * | 2017-05-19 | 2017-10-17 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置及终端 |
CN109358805A (zh) * | 2018-09-03 | 2019-02-19 | 中新网络信息安全股份有限公司 | 一种数据缓存方法 |
CN110222209A (zh) * | 2019-06-14 | 2019-09-10 | 北京马赫谷科技有限公司 | 图片存储方法、查询方法、装置及存取系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1190211A (zh) * | 1997-06-10 | 1998-08-12 | Lsi罗吉克公司 | 面向对象的多媒体结构 |
CN1601475A (zh) * | 2003-09-25 | 2005-03-30 | 国际商业机器公司 | 用于在smt处理器中进行cpi负载平衡的系统和方法 |
CN101075241A (zh) * | 2006-12-26 | 2007-11-21 | 腾讯科技(深圳)有限公司 | 缓存处理方法以及缓存处理系统 |
CN101277211A (zh) * | 2008-05-16 | 2008-10-01 | 腾讯科技(深圳)有限公司 | 数据缓存方法及装置 |
-
2011
- 2011-12-22 CN CN2011104359062A patent/CN102411631A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1190211A (zh) * | 1997-06-10 | 1998-08-12 | Lsi罗吉克公司 | 面向对象的多媒体结构 |
CN1601475A (zh) * | 2003-09-25 | 2005-03-30 | 国际商业机器公司 | 用于在smt处理器中进行cpi负载平衡的系统和方法 |
CN101075241A (zh) * | 2006-12-26 | 2007-11-21 | 腾讯科技(深圳)有限公司 | 缓存处理方法以及缓存处理系统 |
CN101277211A (zh) * | 2008-05-16 | 2008-10-01 | 腾讯科技(深圳)有限公司 | 数据缓存方法及装置 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102724586B (zh) * | 2012-07-05 | 2014-11-05 | 百视通网络电视技术发展有限责任公司 | 基于iptv的页面缓存方法及系统 |
CN102724586A (zh) * | 2012-07-05 | 2012-10-10 | 百视通网络电视技术发展有限责任公司 | 基于iptv的页面缓存方法及系统 |
CN103399759A (zh) * | 2013-06-29 | 2013-11-20 | 广州市动景计算机科技有限公司 | 一种网络内容下载方法及装置 |
CN103399759B (zh) * | 2013-06-29 | 2017-02-08 | 广州市动景计算机科技有限公司 | 一种网络内容下载方法及装置 |
CN104424116A (zh) * | 2013-08-19 | 2015-03-18 | 中国科学院声学研究所 | 一种嵌入式浏览器磁盘缓存的方法及系统 |
CN104424116B (zh) * | 2013-08-19 | 2017-07-07 | 中国科学院声学研究所 | 一种嵌入式浏览器磁盘缓存的方法及系统 |
CN104639588B (zh) * | 2013-11-14 | 2019-07-16 | 腾讯科技(北京)有限公司 | 一种文件下载方法、装置和系统 |
CN104639588A (zh) * | 2013-11-14 | 2015-05-20 | 腾讯科技(北京)有限公司 | 一种文件下载方法、装置和系统 |
CN106713450A (zh) * | 2016-12-21 | 2017-05-24 | 广州优视网络科技有限公司 | 基于读写分离模式的下载提速方法及装置 |
CN107256180B (zh) * | 2017-05-19 | 2019-04-26 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置及终端 |
CN107256180A (zh) * | 2017-05-19 | 2017-10-17 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置及终端 |
CN109358805A (zh) * | 2018-09-03 | 2019-02-19 | 中新网络信息安全股份有限公司 | 一种数据缓存方法 |
CN110222209A (zh) * | 2019-06-14 | 2019-09-10 | 北京马赫谷科技有限公司 | 图片存储方法、查询方法、装置及存取系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102411631A (zh) | 一种嵌入式浏览器磁盘缓存的方法 | |
CN109614377B (zh) | 分布式文件系统的文件删除方法、装置、设备及存储介质 | |
CN102170479B (zh) | Web缓存的更新方法及Web缓存的更新装置 | |
US9606703B2 (en) | Techniques for detecting inactive browser windows | |
CN102479250A (zh) | 一种嵌入式浏览器磁盘缓存方法 | |
CN101510219B (zh) | 文件数据访问方法、装置以及系统 | |
CN103116634B (zh) | 支持高并发缓存任务队列的系统及其异步批量操作方法 | |
US9225617B2 (en) | Techniques for detecting new browser windows | |
CN107704203B (zh) | 聚合大文件的删除方法、装置、设备及计算机存储介质 | |
CN103198027A (zh) | 一种存储文件和提供文件的方法和装置 | |
CN105653198A (zh) | 数据处理方法及装置 | |
WO2016173441A1 (zh) | 服务器缓存处理方法、装置及系统 | |
CN102710776B (zh) | 一种防止短时间内重复请求api服务器的方法 | |
CN105447037A (zh) | 清除缓存的方法及装置 | |
CN103365977A (zh) | 非易失性存储介质上数据的存储处理方法和装置 | |
CN105893429A (zh) | 用于优化web缓存的方法及系统 | |
CN104424116A (zh) | 一种嵌入式浏览器磁盘缓存的方法及系统 | |
CN104581404B (zh) | 多媒体数据的处理方法、装置及系统 | |
CN104376097A (zh) | 基于Windows服务程序的主动式缓存方法 | |
CN103067419B (zh) | 一种分布式文件系统及在该系统中控制文件存储的方法 | |
CN108769244B (zh) | 一种存储任务信息获取方法及相关装置 | |
CN107704596B (zh) | 一种读取文件的方法、装置及设备 | |
US20130346701A1 (en) | Replacement method and apparatus for cache | |
CN104580276A (zh) | 信息推送方法、装置、系统及信息接入装置 | |
CN104125253B (zh) | 网络应用的实现方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120411 |