【问题标题】:Optimize JavaScript CSS download优化 JavaScript CSS 下载
【发布时间】:2012-07-28 23:23:24
【问题描述】:

我的网站有许多页面都使用 jQuery 和 JSON 以及相同的 CSS,除了少数页面。第一个页面是用户登录。由于用户需要花时间输入他的用户名和密码,我想在登录期间下载整个用户会话所需的所有 JavaScript 和 CSS 文件。如何才能做到这一点?所有页面的标题都相同。如何优化?

【问题讨论】:

  • 请解释一下for entire user session
  • @user982207 您愿意在您的页面中包含 jQuery 吗?我会让我的答案更容易理解
  • 整个会话的意义,直到用户没有注销..
  • @sam 是的,我正在使用 jquery json 和 googlemaps

标签: php javascript jquery css


【解决方案1】:

我的想法是在 document.load 之后动态加载 js 和 css 文件。这不会影响登录页面的加载时间,同时还会在用户登录后缓存您的 js 和 css 文件。

如果加载速度更快,您也可以轻松地将其更改为 document.ready

这样的事情呢?

$(document).load(function() {
    function preloadFile(filename, filetype){

        //For javascript files
        if (filetype=="js"){
            var fileref=document.createElement('script');
            fileref.setAttribute("type","text/javascript");
            fileref.setAttribute("src", filename);
        }

        //For CSS files
        else if (filetype=="css") {
            var fileref=document.createElement("link");
            fileref.setAttribute("rel", "stylesheet");
            fileref.setAttribute("type", "text/css");
            fileref.setAttribute("href", filename);
        }

        document.getElementsByTagName("head")[0].appendChild(fileref)
    }

    //Examples of how to use below
    preloadFile("myscript.js", "js"); 
    preloadFile("javascript.php", "js");
    preloadFile("mystyle.css", "css");
});

参考文献

http://www.javascriptkit.com/javatutors/loadjavascriptcss.shtml

【讨论】:

  • 可以试一试..但是如果2个页面的css不同..我可以在登录过程中下载未来页面的css吗?
【解决方案2】:
  • 在您的登录页面上添加您所有的 css/javascript。
  • 将所有 CSS 放在 HEAD 部分的顶部。
  • 将所有 Javascript 放在底部。
  • 还将您的 Javascript 和 CSS 作为外部文件,因为它们被浏览器缓存(而不是编写内联的 javascript 和 css 在页面中)。

  • 缩小 Javascript 和 CSS

更新 2

JS和CSS的后期加载也可以使用YUI GET UTILITY来完成

更多详情请看Yahoo : Best Practises for Optimizing your WebSite

【讨论】:

  • 我喜欢 #4 与 #1、#2 和 #3 的矛盾
  • 通过链接到外部文件,而不是实际的 JS 和 CSS
  • @Anand 关于 YUI Get Utility 的有趣编辑。有空我会去看看的
  • 这其实是正确的解决方案。如果您只是想将其放入缓存中,则无需动态(使用 Javascript)加载其他 javascript。您所要做的就是将所有指向相关 css 文件的链接(最好是 1 个)放在标题中,并将所有指向相关 javascript 文件的链接(最好是 1 个)放在结束 body 标记的上方。有关示例和说明,请参阅 HTML5Boilerplate。
  • 脚本标签的一些 HTML5 特性(异步和延迟)可以提供帮助(参见:sitepoint.com/a-detailed-breakdown-of-the-script-tag),但据我所知,没有办法简单地将脚本放入缓存而不执行它,除了可能将脚本作为文本下载并存储到 localStorage 中,然后稍后对其进行评估。但除非你正在建立一个世界级的超重客户端,否则我怀疑你需要接近那种东西。
【解决方案3】:

我想在登录期间下载整个用户会话所需的所有 javascript 和 css 文件

<title>Login</title>
<script src="foo.js"></script> <!-- This line might be better placed just before </body> -->
<link rel="stylesheet" type="text/css" href="foo.css">

【讨论】:

    【解决方案4】:

    我建议使用异步加载器,例如需要JS。

    创建并压缩 javascript 和 css 后,将其加载分配给一个事件,例如当用户关注用户名字段时。

    Facebook 在他们的预输入查询中使用了类似的技巧:当搜索框获得焦点时加载与用户相关的数据。

    【讨论】:

    • (在 Sam 发表评论之前开始写这篇文章,这与我的建议类似。)
    • 我可能错了,但除非他使用的是 Node,否则他将无法利用 require.js 中的优化工具。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-02
    • 2013-10-22
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多