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