±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚ΢ÐÅ£¬½éÉÜÁËWebViewµÄ»º´æÀàÐÍ£¬ä¯ÀÀÆ÷×Ô´øµÄÍøÒ³Êý¾Ý»º´æ£¬H5µÄ»º´æµÈ¡£ |
|
Ò»¡¢±³¾°
ÏÖÔÚµÄApp¿ª·¢£¬»ò¶à»òÉÙ¶¼»áÓõ½Hybridģʽ£¬µ½ÁËWebViewÕâ±ß£¬¾³£»á¼ÓÔØÒ»Ð©jsÎļþ£¨ÀýÈçºÍWebViewÓÃÀ´NativeͨÐŵÄbridge.js£©£¬¶øÕâЩjsÎļþ²»»á¾³£·¢Éú±ä»¯£¬ËùÒÔÎÒÃÇÏ£ÍûjsÔÚWebViewÀïÃæ¼ÓÔØÒ»´ÎÖ®ºó£¬Èç¹ûjsûÓз¢Éú±ä»¯£¬Ï´ξͲ»ÓÃÔÙ·¢ÆðÍøÂçÇëÇóÈ¥¼ÓÔØ£¬´Ó¶ø¼õÉÙÁ÷Á¿ºÍ×ÊÔ´µÄÕ¼Óá£ÄÇôÓÐʲô·½Ê½¿ÉÒÔ´ïµ½Õâ¸öÄ¿µÄÄØ£¿ÏȵôÓWebViewµÄ»º´æÔÀíÈëÊÖ¡£
¶þ¡¢WebViewµÄ»º´æÀàÐÍ
WebViewÖ÷Òª°üÀ¨Á½À໺´æ£¬Ò»ÀàÊÇä¯ÀÀÆ÷×Ô´øµÄÍøÒ³Êý¾Ý»º´æ£¬ÕâÊÇËùÓеÄä¯ÀÀÆ÷¶¼Ö§³ÖµÄ¡¢ÓÉHTTPÐÒ鶨ÒåµÄ»º´æ£»ÁíÒ»ÀàÊÇH5»º´æ£¬ÕâÊÇÓÉwebÒ³ÃæµÄ¿ª·¢ÕßÉèÖõģ¬H5»º´æÖ÷Òª°üÀ¨ÁËApp
Cache¡¢DOM Storage¡¢Local Storage¡¢Web SQL Database ´æ´¢»úÖÆµÈ£¬ÕâÀïÎÒÃÇÖ÷Òª½éÉÜApp
CacheÀ´»º´æjsÎļþ¡£
Èý¡¢ä¯ÀÀÆ÷×Ô´øµÄÍøÒ³Êý¾Ý»º´æ
1.¹¤×÷ÔÀí
ä¯ÀÀÆ÷»º´æ»úÖÆÊÇͨ¹ýHTTPÐÒéHeaderÀïµÄCache-Control£¨»òExpires£©ºÍLast-Modified£¨»ò
Etag£©µÈ×Ö¶ÎÀ´¿ØÖÆÎļþ»º´æµÄ»úÖÆ¡£¹ØÓÚÕ⼸¸ö×ֶεÄ×÷ÓúÍä¯ÀÀÆ÷µÄ»º´æ¸üлúÖÆ£¬´ó¼Ò¿ÉÒÔ¿´¿´ÕâÁ½ÆªÎÄÕÂ(H5
»º´æ»úÖÆÇ³Îö ÒÆ¶¯¶Ë Web ¼ÓÔØÐÔÄÜÓÅ»¯£¬Android£ºÊÖ°ÑÊÖ½ÌÄã¹¹½¨ WebView µÄ»º´æ»úÖÆ
& ×ÊÔ´Ô¤¼ÓÔØ·½°¸)£¬ÀïÃæÓÐÏêϸµÄ½éÉÜ¡£ÏÂÃæ´ÓÎÒʵ¼ÊÓ¦ÓõĽǶȣ¬½éÉÜÒ»ÏÂͨ³£»áÔÚHTTPÐÒéÖÐÓöµ½µÄHeader¡£
ÕâÁ½¸ö×Ö¶ÎÊǽÓÊÕÏìӦʱ£¬ä¯ÀÀÆ÷¾ö¶¨ÎļþÊÇ·ñÐèÒª±»»º´æ£»»òÕßÐèÒª¼ÓÔØÎļþʱ£¬ä¯ÀÀÆ÷¾ö¶¨ÊÇ·ñÐèÒª·¢³öÇëÇóµÄ×ֶΡ£
Cache-Control:max-age=315360000£¬Õâ±íʾ»º´æÊ±³¤Îª315360000Ãë¡£Èç¹û315360000ÃëÄÚÐèÒªÔÙ´ÎÇëÇóÕâ¸öÎļþ£¬ÄÇôä¯ÀÀÆ÷²»»á·¢³öÇëÇó£¬Ö±½ÓʹÓñ¾µØµÄ»º´æµÄÎļþ¡£ÕâÊÇHTTP/1.1±ê×¼ÖеÄ×ֶΡ£
Expires: Thu, 31 Dec 2037 23:55:55 GMT£¬Õâ±íʾÕâ¸öÎļþµÄ¹ýÆÚʱ¼äÊÇ2037Äê12ÔÂ31ÈÕÍíÉÏ23µã55·Ö55Ã룬ÔÚÕâ¸öʱ¼ä֮ǰä¯ÀÀÆ÷¶¼²»»áÔٴη¢³öÇëÇóÈ¥»ñÈ¡Õâ¸öÎļþ¡£ÕâÊÇHTTP/1.0ÖеÄ×ֶΣ¬Èç¹û¿Í»§¶ËºÍ·þÎñÆ÷ʱ¼ä²»Í¬²½»áµ¼Ö»º´æ³öÏÖÎÊÌ⣬Òò´Ë²ÅÓÐÁËÉÏÃæµÄCache-Control£¬µ±ËüÃÇͬʱ³öÏÖÔÚHTTP
ResponseµÄHeaderÖÐʱ£¬Cache-ControlÓÅÏȼ¶¸ü¸ß¡£
ÏÂÃæÁ½¸ö×Ö¶ÎÊÇ·¢ÆðÇëÇóʱ£¬·þÎñÆ÷¾ö¶¨ÎļþÊÇ·ñÐèÒª¸üеÄ×ֶΡ£
Last-Modified:Wed, 28 Sep 2016 09:24:35 GMT£¬Õâ±íʾÕâ¸öÎļþ×îºóµÄÐÞ¸Äʱ¼äÊÇ2016Äê9ÔÂ28ÈÕ9µã24·Ö35Ãë¡£Õâ¸ö×ֶζÔÓÚä¯ÀÀÆ÷À´Ëµ£¬»áÔÚÏ´ÎÇëÇóµÄʱºò£¬×÷ΪRequest
HeaderµÄIf-Modified-Since×ֶδøÉÏ¡£ÀýÈçä¯ÀÀÆ÷»º´æµÄÎļþÒѾ³¬¹ýÁËCache-Control£¨»òÕßExpires£©£¬ÄÇôÐèÒª¼ÓÔØÕâ¸öÎļþʱ£¬¾Í»á·¢³öÇëÇó£¬ÇëÇóµÄHeaderÓÐÒ»¸ö×Ö¶ÎΪIf-Modified-Since£ºWed,
28 Sep 2016 09:24:35 GMT£¬·þÎñÆ÷½ÓÊÕµ½ÇëÇóºó£¬»á°ÑÎļþµÄLast-Modifiedʱ¼äºÍÕâ¸öʱ¼ä¶Ô±È£¬Èç¹ûʱ¼äû±ä£¬ÄÇôä¯ÀÀÆ÷½«·µ»Ø304
Not Modified¸øä¯ÀÀÆ÷£¬ÇÒcontent-length¿Ï¶¨ÊÇ0¸ö×Ö½Ú¡£Èç¹ûʱ¼äÓб仯£¬ÄÇô·þÎñÆ÷»á·µ»Ø200
OK£¬²¢·µ»ØÏàÓ¦µÄÄÚÈݸøä¯ÀÀÆ÷¡£
ETag:¡±57eb8c5c-129¡±£¬ÕâÊÇÎļþµÄÌØÕ÷´®¡£¹¦ÄÜͬÉÏÃæµÄLast-ModifiedÊÇÒ»ÑùµÄ¡£Ö»ÊÇÔÚä¯ÀÀÆ÷Ï´ÎÇëÇóʱ£¬ETagÊÇ×÷ΪRequest
HeaderÖеÄIf-None-Match:¡±57eb8c5c-129¡±×ֶδ«µ½·þÎñÆ÷¡£·þÎñÆ÷ºÍ×îеÄÎļþÌØÕ÷´®¶Ô±È£¬Èç¹ûÏàͬÄÇô·µ»Ø304
Not Modified£¬²»Í¬Ôò·µ»Ø200 OK¡£µ±ETagºÍLast-Modifiedͬʱ³öÏÖʱ£¬ÈκÎÒ»¸ö×Ö¶ÎÖ»ÒªÉúЧÁË£¬¾ÍÈÏΪÎļþÊÇûÓиüеġ£
2.WebViewÈçºÎÉèÖòÅÄÜÖ§³ÖÉÏÃæµÄÐÒé
ÓÉÉÏÃæµÄ½éÉÜ¿ÉÖª£¬Ö»ÒªÊǸöÖ÷Á÷µÄ¡¢ºÏ¸ñµÄä¯ÀÀÆ÷£¬¶¼Ó¦¸ÃÄܹ»Ö§³ÖHTTPÐÒé²ãÃæµÄÕ⼸¸ö×ֶΡ£Õâ²»ÊÇÎÒÃÇ¿ª·¢Õß¿ÉÒÔÐ޸ĵģ¬Ò²²»ÊÇÎÒÃÇÓ¦¸ÃÐ޸ĵÄÅäÖá£ÔÚAndroidÉÏ£¬ÎÒÃǵÄWebViewÒ²Ö§³ÖÕ⼸¸ö×ֶΡ£µ«ÊÇÎÒÃÇ¿ÉÒÔͨ¹ý´úÂëÈ¥ÉèÖÃWebViewµÄCache
Mode£¬¶øÊ¹µÃÐÒéÉúЧ»òÕßÎÞЧ¡£WebViewÓÐÏÂÃæ¼¸¸öCache Mode£º
LOAD_CACHE_ONLY: ²»Ê¹ÓÃÍøÂ磬ֻ¶ÁÈ¡±¾µØ»º´æÊý¾Ý¡£
LOAD_DEFAULT: ¸ù¾Ýcache-control¾ö¶¨ÊÇ·ñ´ÓÍøÂçÉÏÈ¡Êý¾Ý¡£
LOAD_CACHE_NORMAL: API level 17ÖÐÒѾ·ÏÆú£¬´ÓAPI level
11¿ªÊ¼×÷ÓÃͬLOAD_DEFAULTģʽ
LOAD_NO_CACHE: ²»Ê¹Óûº´æ£¬Ö»´ÓÍøÂç»ñÈ¡Êý¾Ý¡£
LOAD_CACHE_ELSE_NETWORK£¬Ö»Òª±¾µØÓУ¬ÎÞÂÛÊÇ·ñ¹ýÆÚ£¬»òÕßno-cache£¬¶¼Ê¹Óûº´æÖеÄÊý¾Ý¡£±¾µØÃ»Óлº´æÊ±²Å´ÓÍøÂçÉÏ»ñÈ¡¡£
ÉèÖÃWebView»º´æµÄCache ModeʾÀý´úÂëÈçÏ£º
WebSettings settings = webView.getSettings();
settings .setCacheMode(WebSettings.LOAD_DEFAULT); |
ÍøÉϺܶàÈ˶¼Ëµ¸ù¾ÝÍøÂçÌõ¼þȥѡÔñCache Mode£¬µ±ÓÐÍøÂçʱ£¬ÉèÖÃΪLOAD_DEFAULT£¬µ±Ã»ÓÐÍøÂçʱÉèÖÃΪLOAD_CACHE_ELSE_NETWORK¡£µ«ÊÇÔÚÎÒµÄÒµÎñÖУ¬jsÎļþµÄ¸üж¼ÊǷǸ²¸ÇʽµÄ¸üУ¬Ò²¾ÍÊÇʱºòÿ´Î¸Ä±äjsÎļþµÄʱºò£¬ÎļþµÄurlµØÖ·Ò»¶¨»á·¢Éú±ä»¯£¬ËùÒÔÎÒÏ£Íûä¯ÀÀÆ÷Äܹ»»º´æÏÂÀ´js£¬²¢ÇÒһֱʹÓÃËü£¬ÄÇôÎҾ͸øËüÖ»ÉèÖÃΪLOAD_CACHE_ELSE_NETWORK¡£µ±È»Èç¹ûÄãÒªÊÇ¿ÉÒÔ¸ÄjsµÄcdn·þÎñÆ÷µÄCache-Control×ֶΣ¬ÄÇÒ²Ðа¡£¬ÓÃLOAD_DEFAULT¾ÍokÁË¡£ÖÁÓÚÎļþÊÇÓ¦¸Ã²ÉÓø²¸Çʽor·Ç¸²¸ÇʽµÄ¸üУ¬²»ÊÇÎÒ½ñÌìÒªÌÖÂÛµÄÄÚÈÝ£¬ÔÚwebǰ¶ËÁìÓò£¬ÕâÊÇÒ»¸ö¿ÉÒÔÁÄÁĵÄtopic¡£
¹ØÓÚiOSµÄWebView£¬ÎÒͬÊÂÔÚʵ¼Ê²âÊÔµÄʱºò¾¹È»·¢ÏÖ£¬¿ØÖÆÎļþ»º´æµÄResponse HeaderÊÇExpires×ֶΡ£¡£¶øÇÒiOSÎÞ·¨Õë¶ÔÕû¸öWebViewÉèÖÃCache
Mode£¬Ö»ÄÜÕë¶Ôÿһ¸öURLRequestÈ¥ÉèÖᣡ£ºóÐøÓлú»áҪѧϰһÏÂiOSÄÇ¿éµÄÇé¿ö¡£
3.ÔÚÊÖ»úÀïÃæµÄ´æ´¢Â·¾¶
ä¯ÀÀÆ÷ĬÈÏ»º´æÏÂÀ´µÄÎļþÊÇÔõô±»´æ´¢µ½ÁËÄÄÀïÄØ£¿Õâ¸öÎÊÌâÔÚ½Ó´¥µ½WebViewÒÔÀ´£¬¾ÍÒ»Ö±ÊÇÒ»¸öÃÕÌâ¡£Õâ´ÎÓÉÓÚ¹¤×÷µÄÐèÒª£¬ÎÒÌØÒârootÁËÁ½Ì¨ÊÖ»ú£¬Ò»Ì¨ºìÃ×1£¨Android
4.4£©ºÍһ̨СÃ×4c£¨Android 5.1£©£¬ÔÚroot¸ßϵͳ°æ±¾£¨6.0ºÍ7.1£©µÄÁ½Ì¨Nexus¶¼ÒÔʧ°Ü¸æÖÕÖ®ºó£¬ÎÒ¾ö¶¨»¹ÊÇÏÈ¿´¿´4.4ºÍ5.1ϵͳÉÏ£¬WebView×Ô´øµÄ»º´æ´æµ½ÁËÄÄÀï¡£
Ê×ÏÈ£¬²»ÓÃ˼¿¼¾ÍÖªµÀ£¬ÕâЩÎļþÒ»¶¨ÊÇÔÚ/data/data/°üÃû/Ŀ¼Ï£¬ÔÚÎÒ֮ǰµÄһƪ²©¿ÍÀïÃæÌáµ½¹ý£¬ÕâÊÇÿһ¸öÓ¦ÓÃ×Ô¼ºµÄÄÚ²¿´æ´¢Ä¿Â¼¡£
½Ó×Å£¬ÎÒÃÇ´ò¿ªÖÕ¶Ë£¬Ê¹ÓÃadbÁ¬½ÓÊÖ»ú£¬È»ºó°´ÕÕÏÂÃæÃüÁî²Ù×÷һϡ£
// 1.ÏȽøÈëshell
adb shell // 2.¿ªÆôrootÕ˺Å
su // 3.ÐÞ¸ÄÎļþ¼ÐȨÏÞ
chmod 777 data/data/ÄãµÄÓ¦ÓðüÃû/
// 4.ÐÞ¸Ä×ÓÎļþ¼ÐµÄȨÏÞ£¬ÒòΪAndroidÃüÁîÐв»Ö§³ÖÏòLinuxÄÇÑùµÄ-RÃüÁîʵÏֵݹéʽµÄchmod¡£¡£¡£
chmod 777 data/data/ÄãµÄÓ¦ÓðüÃû/*
// 5.ËùÒÔÈç¹ûÄã¶ÔÓ¦ÓÃĿ¼²ã¼¶¸üÉÄã¾ÍÒª½øÒ»²½µØchmod ¡£¡£¡£
chmod 777 data/data/ÄãµÄÓ¦ÓðüÃû/*/*
// 6.Ö±µ½ÖÕ¶ËÀïÌáʾÄã˵£¬no such file or directory ʱ£¬ËµÃ÷chmod
ÍêÁË£¬ËùÓеÄÄÚ²¿´æ´¢ÀïÃæµÄÎļþ¼ÐºÍÎļþ¶¼¿ÉÒÔ¿´µ½ÁË£¬Èç¹û´ó¼ÒÓиüºÃµÄ·½·¨ÇëÒ»¶¨¸æËßÎÒ£¬¶àлÁË~ |
Android 4.4µÄĿ¼£º/data/data/°üÃû/app_webview/cache/£¬ÈçÏÂͼËùʾµÄµÚ¶þ¸öÎļþ¼Ð¡£

¿ÉÄÜÄã×¢Òâµ½ÁË£¬µÚÒ»¸öÎļþ¼ÐÊǽÐApplication Cache£¬ÎÒÃǺóÃæÔÙ˵Ëü¡£
Android 5.1µÄĿ¼£º/data/data/°üÃû/cache/org.chromium.android_webview/ÏÂÃæ£¬ÈçÏÂͼËùʾ¡£

µ«ÊÇÔÚ5.1ϵͳÉÏ£¬/data/data/°üÃû/app_webview/Îļþ¼ÐÒÀÈ»´æÔÚ£¬Ö»ÊÇ4.4ϵͳÉÏÃæ´æ´¢WebView×Ô´ø»º´æµÄapp_webview/cacheÎļþ¼Ð²»ÔÙ´æÔÚÁË£¨×¢ÒâÏÂApp
CacheĿ¼»¹ÔÚ£©£¬ÈçÏÂͼËùʾ¡£

×ÛÉÏËùÊö£¬WebView×Ô´øµÄä¯ÀÀÆ÷ÐÒéÖ§³ÖµÄ»º´æ£¬ÔÚ²»Í¬µÄϵͳ°æ±¾ÉÏ£¬Î»ÖÃÊDz»Ò»ÑùµÄ¡£Ò²Ðí³ýÁËÎÒroot¹ýµÄ4.4¡¢5.1ÒÔÍ⣬ÆäËû°æ±¾ÏµÍ³µÄWebView×Ô´ø»º´æ»¹¿ÉÄÜ´æÔÚÓÚ²»Í¬µÄĿ¼ÀïÃæ¡£
ÁíÍâÒ»¸öÊǹØÓÚ»º´æÎļþµÄ´æ´¢¸ñʽºÍË÷Òý¸ñʽ£¬ÔÚ²»Í¬µÄÊÖ»úÉÏ¿ÉÄÜÒ²Óвî±ð£¬ÒòΪ֮ǰ¿´µ½ÍøÉϵÄÈ˶¼ËµÓнÐwebview.db»òÕßwebviewCache.dbµÄÎļþ£¬Õâ¸öÎļþÄØ£¬»¹²»ÊÇÔÚapp_webview/cache»òÕßorg.chromium.android_webviewÏÂÃæ£¬¶øÊÇÔÚ/data/data/°üÃû/database/ÀïÃæ¡£µ«ÊÇ£¬ÎÒÕâÁ½Ì¨root¹ýµÄÊÖ»ú¶¼Ã»Óп´µ½ÕâÖÖÎļþ£¬¶øÇÒÎÒ°Ñ/data/data/°üÃû/ÏÂÃæËùÓеÄdbÎļþ¶¼´ò¿ª¿´ÁË£¬²¢Ã»Óз¢ÏÖÓд洢url¼Ç¼µÄtable¡£¡£
ʵ¼ÊÉÏ£¬ÒÔ5.1ϵͳΪÀý£¬ÎÒ¿´µ½ÁË/data/data/°üÃû/cache/org.chromium.android_webview/ÏÂÃæÓнÐindexºÍ/index-dir/the-real-indexµÄÎļþ£¬ÒÔ¼°Ò»¶ÑÃû³ÆÎªmd5+Ï»®Ïß+Êý×ÖµÄÎļþ£¬ÉÏÃæµÄͼÖÐÒ²¿ÉÒÔ¿´µÃµ½£¬Õâ¿éµÄÔÀíÈÔÈ»ÓÐЩÒÉÎÊ£¬Ò²Ï£ÍûרҵµÄ´óÉñ¿ÉÒÔ½â´ðһϡ£
ËÄ¡¢H5µÄ»º´æ
½²ÍêÁËWebView×Ô´øµÄ»º´æ£¬ÏÂÃæ½²Ò»ÏÂH5ÀïÃæµÄApp Cache¡£Õâ¸öCacheÊÇÓÉ¿ª·¢WebÒ³ÃæµÄ¿ª·¢Õß¿ØÖƵ쬶ø²»ÊÇÓÉNativeÈ¥¿ØÖƵ쬵«ÊÇNativeÀïÃæµÄWebViewÒ²ÐèÒªÎÒÃÇ×öÒ»ÏÂÉèÖòÅÄÜÖ§³ÖH5µÄÕâ¸öÌØÐÔ¡£
1.¹¤×÷ÔÀí
дWebÒ³Ãæ´úÂëʱ£¬Ö¸¶¨manifestÊôÐÔ¼´¿ÉÈÃÒ³ÃæÊ¹ÓÃApp Cache¡£Í¨³£htmlÒ³Ãæ´úÂë»áÕâôд£º
<html manifest
= "xxx.appcache">
</html> |
xxx.appcacheÎļþÓõÄÊÇÏà¶Ô·¾¶£¬ÕâʱappcacheÎļþµÄ·¾¶ÊǺÍÒ³ÃæÒ»ÑùµÄ¡£Ò²¿ÉÒÔʹÓõľø¶Ô·¾¶£¬µ«ÊÇÓòÃûÒª±£³ÖºÍÒ³ÃæÒ»Ö¡£
ÍêÕûµÄxxx.appcacheÎļþÒ»°ã°üÀ¨ÁË3¸ösection£¬»ù±¾¸ñʽÈçÏ£º
CACHE MANIFEST
# 2017- 05- 13 v1.0.0
/bridge .js
NETWORK:
*
FALLBACK:
/404.html |
CACHE MANIFESTÏÂÃæÎļþ¾ÍÊÇÒª±»ä¯ÀÀÆ÷»º´æµÄÎļþ
NETWORKÏÂÃæµÄÎļþ¾ÍÊÇÒª±»¼ÓÔØµÄÎļþ
FALLBACKÏÂÃæµÄÎļþÊÇÄ¿±êÒ³Ãæ¼ÓÔØÊ§°ÜʱµÄÏÔʾµÄÒ³Ãæ
AppCache¹¤×÷µÄÔÀí£ºµ±Ò»¸öÉèÖÃÁËmanifestÎļþµÄhtmlÒ³Ãæ±»¼ÓÔØÊ±£¬CACHE MANIFESTÖ¸¶¨µÄÎļþ¾Í»á±»»º´æµ½ä¯ÀÀÆ÷µÄApp
CacheĿ¼ÏÂÃæ¡£µ±Ï´μÓÔØÕâ¸öÒ³ÃæÊ±£¬»áÊ×ÏÈÓ¦ÓÃͨ¹ýmanifestÒѾ»º´æ¹ýµÄÎļþ£¬È»ºó·¢ÆðÒ»¸ö¼ÓÔØxxx.appcacheÎļþµÄÇëÇóµ½·þÎñÆ÷£¬Èç¹ûxxx.appcacheÎļþûÓб»Ð޸Ĺý£¬ÄÇô·þÎñÆ÷»á·µ»Ø304
Not Modified¸øµ½ä¯ÀÀÆ÷£¬Èç¹ûxxx.appcacheÎļþ±»Ð޸Ĺý£¬ÄÇô·þÎñÆ÷»á·µ»Ø200
OK£¬²¢·µ»ØÐµÄxxx.appcacheÎļþµÄÄÚÈݸøä¯ÀÀÆ÷£¬ä¯ÀÀÆ÷ÊÕµ½Ö®ºó£¬ÔÙ°ÑеÄxxx.appcacheÎļþÖÐÖ¸¶¨µÄÄÚÈݼÓÔØ¹ýÀ´½øÐлº´æ¡£
¿ÉÒÔ¿´µ½£¬AppCache»º´æÐèÒªÔÚÿ´Î¼ÓÔØÒ³ÃæÊ±¶¼·¢³öÒ»¸öxxx.appcacheµÄÇëÇóÈ¥¼ì²émanifestÎļþÊDz»ÊÇÓиüУ¨byte
by byte£©¡£¸ù¾ÝÕâÆªÎÄÕ£¨H5 »º´æ»úÖÆÇ³Îö ÒÆ¶¯¶Ë Web ¼ÓÔØÐÔÄÜÓÅ»¯£©µÄ½éÉÜ£¬AppCacheÓÐһЩ¿ÓµÄµØ·½£¬ÇÒ¹Ù·½ÒѾ²»ÍƼöʹÓÃÁË£¬µ«Ä¿Ç°Ö÷Á÷µÄä¯ÀÀÆ÷ÒÀÈ»ÊÇÖ§³ÖµÄ¡£ÎÄÕÂÀïÖ÷ÒªÌáµ½ÏÂÃæÕâЩ¿Ó£º
Òª¸üлº´æµÄÎļþ£¬ÐèÒª¸üаüº¬ËüµÄ manifest Îļþ£¬ÄÇÅÂÖ»¼ÓÒ»¸ö¿Õ¸ñ¡£³£Óõķ½·¨£¬ÊÇÐÞ¸Ä
manifest Îļþ×¢ÊÍÖеİ汾ºÅ¡£È磺# 2012-02-21 v1.0.0
±»»º´æµÄÎļþ£¬ä¯ÀÀÆ÷ÊÇÏÈʹÓã¬ÔÙͨ¹ý¼ì²é manifest ÎļþÊÇ·ñÓиüÐÂÀ´¸üлº´æÎļþ¡£ÕâÑù»º´æÎļþ¿ÉÄÜÓõIJ»ÊÇ×îеİ汾¡£
ÔÚ¸üлº´æ¹ý³ÌÖУ¬Èç¹ûÓÐÒ»¸öÎļþ¸üÐÂʧ°Ü£¬ÔòÕû¸ö¸üлáʧ°Ü¡£
manifest ºÍÒýÓÃËüµÄHTMLÒªÔÚÏàͬ HOST¡£
manifest ÎļþÖеÄÎļþÁÐ±í£¬Èç¹ûÊÇÏà¶Ô·¾¶£¬ÔòÊÇÏà¶Ô manifest ÎļþµÄÏà¶Ô·¾¶¡£
manifest Ò²ÓпÉÄܸüгö´í£¬µ¼Ö»º´æÎļþ¸üÐÂʧ°Ü¡£
ûÓлº´æµÄ×ÊÔ´ÔÚÒѾ»º´æµÄ HTML Öв»ÄܼÓÔØ£¬¼´Ê¹ÓÐÍøÂç¡£ÀýÈ磺http://appcache-demo.s3-website-us-east-1.amazonaws.com/without-network/
manifest Îļþ±¾Éí²»Äܱ»»º´æ£¬ÇÒ manifest ÎļþµÄ¸üÐÂʹÓõÄÊÇä¯ÀÀÆ÷»º´æ»úÖÆ¡£ËùÒÔ
manifest ÎļþµÄ Cache-Control »º´æÊ±¼ä²»ÄÜÉèÖÃÌ«³¤¡£
2.WebViewÈçºÎÉèÖòÅÄÜÖ§³ÖAppCache
WebViewĬÈÏÊÇûÓпªÆôAppCacheÖ§³ÖµÄ£¬ÐèÒªÌí¼ÓÏÂÃæÕ⼸ÐдúÂëÀ´ÉèÖãº
WebSettings webSettings = webView.getSettings();
webSettings.setAppCacheEnabled(true);
String cachePath = getApplicationContext (). getCacheDir()
.getPath (); // °ÑÄÚ²¿Ë½Óлº´æÄ¿Â¼'/data/data/ °üÃû/cache/
'×÷ΪWebViewµÄAppCacheµÄ´æ´¢Â·¾¶
webSettings.setAppCachePath (cachePath);
webSettings.setAppCacheMaxSize( 5 * 1024 * 1024); |
×¢Ò⣺WebSettingsµÄsetAppCacheEnabledºÍsetAppCachePath¶¼±ØÐëÒªµ÷ÓòÅÐС£
3.´æ´¢AppCacheµÄ·¾¶
°´ÕÕAndroid SDKµÄAPI˵Ã÷£¬setAppCachePathÊÇ¿ÉÒÔÓÃÀ´ÉèÖÃAppCache·¾¶µÄ£¬µ«ÊÇÎÒʵ¼Ê²âÊÔ·¢ÏÖ£¬²»¹ÜÄãÔõôÉèÖÃÕâ¸ö·¾¶£¬ÉèÖõ½Ó¦ÓÃ×Ô¼ºµÄÄÚ²¿Ë½ÓÐĿ¼»¹ÊÇÍⲿSD¿¨£¬¶¼ÎÞ·¨ÉúЧ¡£AppCache»º´æÎļþ×îÖÕ¶¼»á´æµ½/data/data/°üÃû/app_webview/cache/Application
CacheÕâ¸öÎļþ¼ÐÏÂÃæ£¬ÔÚÉÏÃæµÄAndroid 4.4ºÍ5.1ϵͳĿ¼½ØÍ¼¿ÉÒÔ¿´µÃµ½£¬µ«ÊÇÈç¹ûÄã²»µ÷ÓÃsetAppCachePath·½·¨£¬WebView½«²»»á²úÉúÕâ¸öĿ¼¡£ÕâÀïÓеãÈÃÎÒ¾õµÃÆæ¹Ö£¬ÎҲ²â¿ÉÄÜ´Óijһ¸öϵͳ°æ±¾¿ªÊ¼£¬ÎªÁË»º´æÎļþµÄÍêÕûÐԺͰ²È«ÐÔ¿¼ÂÇ£¬SDKʵÏÖµÄʱºò¾Í°ÉAppCache»º´æÄ¿Â¼ÉèÖõ½ÁËÄÚ²¿Ë½Óд洢¡£
Îå¡¢×ܽá
Ïàͬµã
WebView×Ô´øµÄ»º´æºÍAppCache¶¼ÊÇ¿ÉÒÔÓÃÀ´×öÎļþ¼¶±ðµÄ»º´æµÄ£¬»ù±¾ÉϱȽϺõØÂú×ã¶ÔÓڷǸ²¸ÇʽµÄjs¡¢cssµÈÎļþ¸üС£
²»Í¬µã
WebView×Ô´øµÄ»º´æÊÇÊÇÐÒé²ãʵÏֵģ¨ä¯ÀÀÆ÷Äں˱ê׼ʵÏÖ£¬¿ª·¢ÕßÎÞ·¨¸Ä±ä£©£»¶øAppCacheÊÇÓ¦ÓòãʵÏֵġ£
WebViewµÄ»º´æÄ¿Â¼ÔÚ²»Í¬ÏµÍ³ÉÏ¿ÉÄÜÊDz»Í¬µÄ£»¶ø¶ÔÓÚAppCache¶øÑÔ£¬AppCacheµÄ´æ´¢Â·¾¶ËäÈ»Óз½·¨ÉèÖ㬵«ÊÇ×îÖÕ¶¼´æ´¢µ½ÁËÒ»¸ö¹Ì¶¨µÄÄÚ²¿Ë½ÓÐĿ¼Ï¡£
WebView×Ô´øµÄ»º´æ¿ÉÒÔÔÚ»º´æÉúЧµÄʱºò²»ÓÃÔÙ·¢HTTPÇëÇó£»¶øAppCacheÒ»¶¨»á·¢³öÒ»¸ömanifestÎļþµÄÇëÇó¡£
WebView×Ô´øµÄ»º´æ¿ÉÒÔͨ¹ýÉèÖÃCacheModeÀ´¸Ä±äWebViewµÄ»º´æ»úÖÆ£»¶øAppCacheµÄ»º´æ²ßÂÔÊÇÓÉmanifestÎļþ¿ØÖƵģ¬Ò²¾ÍÊÇ˵ÊÇÓÉwebÒ³Ãæ¿ª·¢Õß¿ØÖƵġ£
×îºó˵һÏ£¬ÆäʵºÜ¶àʱºò£¬ÕâÁ½À໺´æÊǹ²Í¬ÔÚ¹¤×÷µÄ£¬µ±manifestÎļþûÓпØÖÆÄ³Ð©×ÊÔ´¼ÓÔØÊ±£¬ÀýÈçÎÒÉÏÃæÐ´µÄxxx.appcacheÎļþÀNETWORK
sectionÏÂÃæÓõÄÊÇ*ºÅ£¬Òâ˼ÊÇËùÓв»»º´æµÄÎļþ¶¼ÒªÈ¥ÍøÂç¼ÓÔØ¡£´Ëʱ£¬ÕâЩ×ÊÔ´¾Í»á×ßµ½WebView×Ô´øµÄ»º´æ»úÖÆÈ¥£¬½áºÏWebViewµÄCacheMode£¬ÎÒÃÇʵ¼ÊÉ϶ÔÕâЩÎļþ½øÐÐÁËÒ»´ÎWebView×Ô´øµÄ»º´æ¡£¸ãÇå³þÕâÁ½À໺´æµÄÔÀíÓÐÀûÓÚÎÒÃǸüºÃµÄÉè¼Æ×Ô¼ºµÄÒ³ÃæºÍApp£¬¾¡¿ÉÄܼõÉÙÍøÂçÇëÇó£¬Ìá¸ßAppÔËÐÐЧÂÊ¡£ |