Application Cache manifest 的处理 (Webkit)
<html manifest="xxx">
緩存構(gòu)成?url+.manifest+manifest ? ??或者 url (沒有manifest)
? ?
webkit解析html標(biāo)簽,發(fā)送(異步).manifest請求
->HTMLTreeBuilder::processStartTag
->HTMLConstructionSite::insertHTMLHtmlStartTagBeforeHTML
->HTMLHtmlElement::insertedByParser
->documentLoader->applicationCacheHost()->selectCacheWithManifest或者selectCacheWithoutManifest?
? ? ? (創(chuàng)建ApplicationCacheGroup)
->ApplicationCacheGroup::update->ApplicationCacheGroup::createResourceHandle?
? ? ? 發(fā)送manifest請求,ApplicationCacheGroup作為ResourceHandleClient
-----------------異步-------------------
根據(jù).manifest發(fā)送(異步)緩存請求
->ApplicationCacheGroup::didReceiveResponse
->ApplicationCacheGroup::didReceiveData
? ? ? 收到manifest
->ApplicationCacheGroup::didFinishLoading
? ? ? 解析manifest ? (緩存隊(duì)列)
-----------------------------------------
->ApplicationCacheGroup::startLoadingEntry
->ApplicationCacheGroup::createResourceHandle
? ? ? 依次發(fā)送請求獲取緩存資源
->ApplicationCacheGroup::didReceiveResponse
? ? ->ApplicationCacheResource::create (創(chuàng)建CacheResource)
->ApplicationCacheGroup::didReceiveData
? ? ->(填充CacheResource)
->ApplicationCacheGroup::didFinishLoading
-----------------------------------------
保存緩存
->ApplicationCacheGroup::deliverDelayedMainResources
->finishedLoadingMainResource
? ? ->創(chuàng)建主url的CacheResource
->ApplicationCacheGroup::checkIfLoadIsComplete
->ApplicationCacheStorage::storeNewestCache
? ? ? 保存在.db文件里面
*******************************************
第二次訪問根據(jù)url映射從本地?cái)?shù)據(jù)庫取緩存
->MainResourceLoader::load
->ApplicationCacheHost::maybeLoadMainResource
->ApplicationCacheGroup::cacheForMainRequest
->SubstituteData(resource->data(),?resource->response().mimeType(),?resource->response().textEncodingName(), KURL());
? ? ? 獲得緩存數(shù)據(jù)
->(同步)MainResourceLoader::didReceiveResponse
->(同步)MainResourceLoader::didReceiveData ??
總結(jié)
以上是生活随笔為你收集整理的Application Cache manifest 的处理 (Webkit)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WebApp本地存储 (离线缓存策略策略
- 下一篇: WebKit Layout 数据结构