问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请列举如何提升页面性能的一些方法

发布网友 发布时间:2022-05-12 12:50

我来回答

2个回答

懂视网 时间:2022-05-12 17:11

要想提高网页性能有很多办法,除了用js或者通过服务器的配置和css的调整来提高网页性能外,其实我们还可以通过HTML来提高网页性能。

HTML正在变得越来越大。排名前100的网站每个HTML页面大多在40K左右。亚马逊和雅虎使用上千个HTML页面。在youtube.com主页面,HTML元素高达3500个。

  减少的HTML复杂性和一个页面的元素数量并不会明显提高解析时间 - 但HTML是构建极速网页,和适应不同设备并影响成功的一个关键性的因素。
在本文中,您将了解如何编写简洁干净的HTML,使您能够创建快速加载并支持多种设备的网站,将易于调试和维护。

  写代码的方法并不是只有一种-尤其是HTML。这里只是讲解一般经验,但并不是唯一正确的选择。
 HTML, CSS 和 JavaScript

  HTML是一种标记语言,用于表示结构和内容。

  HTML不应被用来显示风格和样式。不要为了显得“更大”把文字写在标题标签(h1~h6)中,或只是为了缩进而使用blockquotes元素。相反,使用CSS来改变元素的外观和布局。

  HTML元素的默认外观是通过浏览器的默认样式实现的:Firefox,Internet Explorer和Opera均不一样。例如,在Chrome中默认h1元素呈现为32px的大小。

  三个基本原则:

  使用HTML表示结构,CSS用来表现不同样式的风格和主题。JavaScript来响应用户行为。

  使用HTML,必要时借助CSS,并且在不得己时再添加JavaScript。例如:在许多情况下,你可能使用HTML表单进行验证,使用CSS或SVG来实现动画。

  将CSS和JavaScript从你的HTML代码中分离。让他们能够缓存,这使代码更易于调试。在生产中,CSS和JavaScript是可以压缩合并的,应该作为你Build系统的一部分。 注* 参见 JavaScript构建(编绎)系统大比拼
 Document文档结构

  使用 HTML5的document type:

XML/HTML Code复制内容到剪贴板

<!DOCTYPE html> 
<html> 
<head> 
<title>Recipes: pesto</title> 
</head> 
<body> 
 <h1>Pesto</h1> 
 <p>Pesto is good!</p> 
 </body> 
</html>

在页面最头部引用CSS文件,如在head元素中:

CSS Code复制内容到剪贴板

<head> 
 <title>My pesto recipe</title> 
 <link rel="/css/global.css"> 
 <link rel="css/local.css"> 
</head>

  这样,浏览器就可以在解析HTML前预先加载样式而不会呈现一个混乱的页面布局。

  把JavaScript放在页面的最底部, 在body封闭之前。这将提高页面渲染时间,因为浏览器可以在JavaScript装载前将页面渲染出来:

JavaScript Code复制内容到剪贴板

<body> 
 ... 
 <script src="/js/global.js"> 
 <script src="js/local.js"> 
 
</body>

  在JavaScript添加事件处理。 不要在HTML中添加。这样非常难以维护,比如:

XML/HTML Code复制内容到剪贴板

index.html:

<head> 
 ... 
 <script src="js/local.js"> 
 
</head> 
 
<body onload="init()"> 
 ... 
 <button onclick="handleFoo()">Foo</button> 
 ... 
</body>

  这样就好多了:

JavaScript Code复制内容到剪贴板

<head> 
 ... 
</head> 
 
<body> 
 ... 
 <button id="foo">Foo</button> 
 ... 
 <script src="js/local.js"> 
</body>

  js/local.js:

init(); 
var fooButton = 
 document.querySelector('#foo'); 
fooButton.onclick = handleFoo(); 
 合法的HTML

  Web网页成功的一个主要因素就是浏览器可以处理无效的HTML。浏览器还有一些如何呈现无效代码的标准化规则。

  但是,这不你放任的理由。有效的HTML更容易调试,往往文件更小,速度更快,占用资源更少,因为它们渲染更快。无效的HTML让响应式设计难以实施。

  使用模板的时候写有效的HTML是特别重要的。

  在你的BUILD系统中验证HTML:使用验证插件,如HTMLHint和SublimeLinter来检查你HTML的语法。

  使用HTML5文档类型。

  请务必保持HTML的层次:正确嵌套元素,确保没有任何未关闭的元素。它可以帮助调试者添加注释。

XML/HTML Code复制内容到剪贴板

<div id="foobar"> 
... 
</div> <!-- foobar ends -->

  请务必在非自封闭的元素后加上结束标签,比如,下面的也可以工作:

XML/HTML Code复制内容到剪贴板

<p>Pesto is good to eat... 
<p>...and pesto is easy to make.

  但是下面的写法可以避免错误,段落层次更加明显:

<p>Pesto is good to eat...</p>
<p>...and pesto is easy to make.</p>

  items元素(li)并不是必须封闭的,有些非常聪明的的程序员会写成这样,无论如何,list元素(ul)是必须封闭的。

XML/HTML Code复制内容到剪贴板

<ul> 
 <li>Basil 
 <li>Pine nuts 
 <li>Garlic 
</ul>

  有一点你必须注意video和audio元素。他们不是自封闭的:

XML/HTML Code复制内容到剪贴板

<!-- 错误: liable to cause layout grief -->

<video src="foo.webm" />

<!-- 正确 -->

<video src="foo.webm"> 
 <p>Video element not supported.</p> 
</video>

  相反,通过删除不必要的代码HTML页面会变得更干净

  没有必要为自封闭元素添加"/",像img等

  设置属性是没有值的,如果不加属性的话(这种情况下,它不会自动播放,没有控制控件),

  video,它是没有任何属性的

XML/HTML Code复制内容到剪贴板

<video src="foo.webm">

  下面两种更好

XML/HTML Code复制内容到剪贴板

<video src="foo.webm" autoplay="false" controls="false"> 
<video src="foo.webm" autoplay="true" controls="true">

  这种可读性更强

XML/HTML Code复制内容到剪贴板

<video src="foo.webm" autoplay controls>

  stylet和script标签不需要type属性;默认就是css和javascript

  优化协议地址更好(去除置http或https,它会根据当前协议自动配)

XML/HTML Code复制内容到剪贴板

<a href="//en.wikipedia.org/wiki/Tag_soup">Tag soup</a>

  增强可读性,如,第一眼看上去就像是个标题

XML/HTML Code复制内容到剪贴板

<h2><a href="/contact">Contact</a><h2>

  而这种则像个链接

<a href="/contact"><h2>Contact</h1></a>

  应该使用小写

XML/HTML Code复制内容到剪贴板

<A HREF="/">Home</A>

  大小写混合看上去更恶心

XML/HTML Code复制内容到剪贴板

<H2>Pesto</h2>

 语义标记

  “语义”意思是跟含义相关

  HTML应该标记有意义的内容:元素和描述的内容相符。

  HTML5引入了一些新的‘语义元素’像 <header>, <footer> 和 <nav>。

  使用正确的元素表达正确的内容对于可访问性是有帮助的。

  使用<h1><h2>,<h3>代表标题, <ul>或<ol>代表lists

  注意<article>的标题应该以<h1>开始

  使用<header>, <footer>, <nav> and <aside>

  使用<p>写正文

  使用<em> 和 <strong> 代替 <i> 和 <b> 表示强调

  表单使用<label>元素,input 类型

  混合文字和元素会导至布局的问题

XML/HTML Code复制内容到剪贴板

<div>Name: <input type="text"></div>

  最好用下面的表示

XML/HTML Code复制内容到剪贴板

<div><label>Name:</label><input type="text"></div>

 布局

  HTML应该使用有意义的组织结构,而不是通过样式来实现。

  使用<p>元素代表文本,而不是用来布局。

  避免使用<br>来换行,使用块级元素和CSS来代替。

  避免使用水平分隔线<hr>。使用CSS的border样式来控制。

  不要使用不必要的DIV。W3C对DIV的定义是排序的是最后一个元素。

  要了解哪些元素是块级元素,避免在DIV中放置不必要的块级元素。将一个list放到div中是没有必要的。

  不要使用table来布局。

  Flex box是被广泛推荐的,能用就用吧。

  使用CSS的padding和margin,理解盒子模型。
 CSS

  这篇文章是关于HTML的,但是这里有一些基本的CSS小贴士。

  避免内嵌的CSS。出于性能考虑,CSS可以在BUILD时内嵌到你的网页中。

  避免ID出现重复。

  如果你想对多个元素应用某个样式,那么请使用class,在父级元素上使用class比在子级上好:

XML/HTML Code复制内容到剪贴板

<!-- 有点笨 :( -->

<ul> 
 <li class="ingredient">Basil</li> 
 <li class="ingredient">Pine nuts</li> 
 <li class="ingredient">Garlic</li> 
</ul>

<!-- 更好 :) -->

<ul class="ingredients"> 
 <li>Basil</li> 
 <li>Pine nuts</li> 
 <li>Garlic</li> 
</ul>

热心网友 时间:2022-05-12 14:19

(1) 减少http请求次数:CSS Sprites, JS、CSS源码压缩、图片大小控制合适;网页Gzip,CDN托管,data缓存 ,图片服务器。

(2) 前端模板 JS+数据,减少由于HTML标签导致的带宽浪费,前端用变量保存AJAX请求结果,每次操作本地变量,不用请求,减少请求次数

(3) 用innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能。

(4) 当需要设置的样式很多时设置className而不是直接操作style。

(5) 少用全局变量、缓存DOM节点查找的结果。减少IO读取操作。

(6) 避免使用CSS Expression(css表达式)又称Dynamic properties(动态属性)。

(7) 图片预加载,将样式表放在顶部,将脚本放在底部 加上时间戳。

(8) 避免在页面的主体布局中使用table,table要等其中的内容完全下载之后才会显示出来,显示比div+css布局慢。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女人梦见蛇的七大预兆解梦 PHOTOSHOP 怎么把眼睛点大 这些月销量10000+的防晒霜,是噱头还是真的好用? 大宝水凝保湿防晒露适合哪些肤质的人使用? 拥有人口过亿的国家最多的大洲是( )A.非洲B.亚洲C.欧洲D.大洋 世界国家最多的大洲是:( ) A.亚洲 B.大洋州 C.非洲 D.欧 拥有人口过亿的国家最多的大洲是:( ) A.非洲 B.亚洲 C.欧洲 D.大洋 餐厅一般中餐都有哪些摆台要求和标准 如何做味道正宗的中餐? 河南文科跟理科高考分数线相差多少 1993年买了3000股深发展,现在值多少钱? 预测深发展08年下半年的市盈率 菠萝种在土里好还是沙子里长的快 世界哪里的菠萝最好 “长叶”和“短叶”的菠萝有何区别呢?哪一种的口感更好一些呢? 没有信用记录的人可以使用捷信手机分期付款吗? 我以前捷信分期手机逾期过但是还完了,现在想分期一个手机能通过吗? 我在捷信分期买了辆小鬼火,现在还没付完,也没有逾期什么的,现在想去分期买个手机,可以吗? 你好 请问一下信用卡逾期过而且现在还有没有还清的 可以申请捷信分期付款买手机吗? 莲蓬买来怎么吃? 3D音效玩CS 怎么设置的问题。 中国平安一账通安全吗?为什么? 我发现我的电脑听某些3d左右声道的音乐,不戴耳机也能听出左右声音来,好神奇,这是什么原理啊? 电脑怎么开机快 电脑声卡怎样实现3D音效? 怎么关掉电脑里的3D声音环绕 电脑的3D音效软件在哪里 急!!谁知道中国平安一账通啊! 平安一账通信誉高吗?有人用过吗 怎么点QQ平台头像??? 200O年买深发展到现在换平安银行了这些年谁知道一百股变多少股了? 电磁炉烧了,还能修吗?一般需要多少钱? 币安区块链研究院的发展表现在哪些方面? 超市买的衣服防盗扣怎么办 币安中国区块链研究院只进行一些合作吗? 晚上做梦梦见父亲被别人打了一巴掌然后我冲过去把别人给打了一顿啥原因? 昨天梦到和同学打架。奇怪的是他们我不认识他们。恩,前面我把他们打了一顿,后来他们就喊人天天找我。 梦到把自己曾经最爱的人和他对象打了一顿 订货确认单模板 外贸:关于收到订单后客户要求的确认书 电脑重装系统变得很卡很慢。。怎么办? 孔夫子旧书网的订单处理 电脑重新装完系统变得很慢很慢怎么办 炸开了锅是什么意思 日语有趣的词汇。 请教高手几个日语单词,需要翻译的很美化,鄙人中文太差,请多指教! 日语中你认为最有意思的日语单词是? 外国人眼中优美的日语词汇有哪些? 关于兴趣爱好的日语单词, 买空调,没有签收,拒收,需要我出退回运费吗?