Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 视图中的表单破坏CSS/JS性能优化_Javascript_Css_Twitter Bootstrap_Asp.net Core Mvc - Fatal编程技术网

Javascript 视图中的表单破坏CSS/JS性能优化

Javascript 视图中的表单破坏CSS/JS性能优化,javascript,css,twitter-bootstrap,asp.net-core-mvc,Javascript,Css,Twitter Bootstrap,Asp.net Core Mvc,我正在努力优化Asp.Net核心MVC应用程序中脚本和CSS的性能 我使用bootstrap和LoadCSS来预加载它。FontsAwesome CSS和Java脚本在内容之后加载 我的布局页面看起来像这样 <head> <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1"> <script> LoadCSS sc

我正在努力优化Asp.Net核心MVC应用程序中脚本和CSS的性能

我使用bootstrap和LoadCSS来预加载它。FontsAwesome CSS和Java脚本在内容之后加载

我的布局页面看起来像这样

<head>

<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1">     

<script>
    LoadCSS script here...
</script>

<script async defer src="https://use.fontawesome.com/releases/v5.2.0/js/all.js" integrity="sha384-4oV5EgaV02iISL2ban6c/RmotsABqE4yZxZLcYMAdG7FAPsyHYAPpywE9PJo+Khy" crossorigin="anonymous"></script>

<link rel="preload" as="style" type="text/css" onload="this.onload=null;this.rel='stylesheet'" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css" integrity="sha384-Smlep5jCw/wG7hdkwQ/Z5nLIefveQRIY9nfy6xoR1uRYBtpZgI6339F5dgvm/e9B" crossorigin="anonymous">

<noscript>
    <link rel="stylesheet" type="text/css" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css" integrity="sha384-Smlep5jCw/wG7hdkwQ/Z5nLIefveQRIY9nfy6xoR1uRYBtpZgI6339F5dgvm/e9B" crossorigin="anonymous">
</noscript>


<style>
    inline critical path CSS here...
</style>

</head>
<body>

<div class="container-fluid body-content">
    @RenderBody()
    @RenderSection("scripts", false)
</div>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script async src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/js/bootstrap.min.js" integrity="sha384-o+RDsa0aLu++PJvFqy8fFScvbHFLtbvScb8AjopnFD+iEQ7wo/CG0xlczd+2O/em" crossorigin="anonymous"></script>
</body>

在这里加载CSS脚本。。。
内联关键路径CSS在这里。。。
@RenderBody()
@RenderSection(“脚本”,false)
这非常有效,只要页面不包含输入表单,我就可以获得很好的性能分数(在Google PagesPed上为94)

对于有输入表单的页面,性能优化停止工作,Google PageSpeed抱怨渲染阻塞jquery.js和引导CSS。由于某些原因,引导程序似乎加载了两次!?下面是PageSpeed对表单页面的说明,其他页面没有这个问题

删除渲染块JavaScript:

优化以下内容的CSS交付:

我不太明白这里发生了什么。不知何故,表单的存在似乎迫使引导程序提前加载,并且预加载,而LoadCSS无法“工作”


表单确实使用客户端数据验证,这可能是罪魁祸首。

我设法解决了问题。我在许多网站上读到,为了获得最佳性能,JavaScript应该放在关闭body标签之前,但这条建议似乎有些过时。实际上,将脚本放在头部并使用defer更有意义。“延迟”将并行加载它们而不阻止渲染,并在之后按顺序执行它们,这是完美的

CSS问题是由于内联关键CSS中缺少一些项,即表单控件。由于某种原因,这导致整个CSS被加载了两次。我曾经为每个页面生成关键CSS,然后合并它们

改进的布局页面:

<head>

<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1">     

<script>
    LoadCSS script here...
</script>

<script async defer src="https://use.fontawesome.com/releases/v5.2.0/js/all.js" integrity="sha384-4oV5EgaV02iISL2ban6c/RmotsABqE4yZxZLcYMAdG7FAPsyHYAPpywE9PJo+Khy" crossorigin="anonymous"></script>

<link rel="preload" as="style" type="text/css" onload="this.onload=null;this.rel='stylesheet'" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css" integrity="sha384-Smlep5jCw/wG7hdkwQ/Z5nLIefveQRIY9nfy6xoR1uRYBtpZgI6339F5dgvm/e9B" crossorigin="anonymous">

<noscript>
    <link rel="stylesheet" type="text/css" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css" integrity="sha384-Smlep5jCw/wG7hdkwQ/Z5nLIefveQRIY9nfy6xoR1uRYBtpZgI6339F5dgvm/e9B" crossorigin="anonymous">
</noscript>


<style>
    inline critical path CSS here...
</style>

<script defer src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script defer src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>

</head>

<body>

<div class="container-fluid body-content">
    @RenderBody()
    @RenderSection("scripts", false)
</div>

</body>

在这里加载CSS脚本。。。
内联关键路径CSS在这里。。。
@RenderBody()
@RenderSection(“脚本”,false)

绘图变厚!它似乎与javascript无关。也许是表单?你能分享最后一页的来源吗?使用目标页面的实际LoadCSS和@RenderBody/@RenderSection值,主页是portal.howsmydriving.app。由于呈现阻塞脚本和cssIs,登录和注册页面的页面速度得分较低。这是问题的一个例子吗?portal.howsmydriving.app/Account/signup能否共享指向此报告的链接?问题可能在于下载的资源的顺序:jquery脚本之后有一些字体和第二个引导css