在后台缓存CSS和Javascript或从应用程序加载它

时间:2013-08-07 18:39:25

标签: java javascript android css webview

我的应用程序使用Webview用于拥有大量CSS和Javascript(大约0.5 MB)的网站。有可能:

  • 在用户打开之前缓存所有CSS和Javascript 应用?

  • 如果没有,也许可以将CSS和Javascript缓存为 用户打开后很长时间(因为它很少变化) 申请第一次?

  • 或者也许可以在Android中放置.js和.css文件 文件夹,所以它会从文件加载而不是连接到 服务器?

1 个答案:

答案 0 :(得分:0)

一种方法是使用HTML5 localStorage。这样的事情(未经测试):

function loadScripts() {
    var scriptURL   = '/myscript.js',
        cssURL      = '/mycss.css',
        jsXHR,
        cssXHR;

    var applyStyleAndScript = function(styleText, scriptText) {
        var styleTag    = document.createElement('style'),
            scriptTag   = document.createElement('script');

        styleTag.innerText = styleText;
        document.body.appendChild(styleTag);

        scriptTag.innerText = jsText;
        document.body.appendChild(scriptTag);
    }

    if (localStorage && localStorage[scriptURL] && localStorage[cssURL]) {
        applyStyleAndScript(localStorage[cssURL], localStorage[scriptURL]);
    } else {
        cssXHR = new XMLHttpRequest();
        jsXHR = new XMLHttpRequest();

        cssXHR.open('GET', cssURL);
        cssXHR.onload = function(e) {
            var cssText = e.target.responseText;

            if (localStorage) localStorage[cssURL] = cssText;

            jsXHR.open('GET', scriptURL);
            jsXHR.onload = function(e) {
                var jsText = e.target.responseText;

                if (localStorage) localStorage[scriptURL] = jsText;

                applyStyleAndScript(cssText, jsText);
            }

            jsXHR.send();
        }

        cssXHR.send();
    }
}