前端seo该学习什么_内容优化

日期: 栏目:营销推广 浏览:

  HTTP是一种客户端/服务器协议,由请求和响应构成。浏览器向一个特定的URL发送HTTP请求,URL对应的宿主服务器发回HTTP响应。该协议使用简单的纯文本格式。请求的类型有GET、POST、HEAD、PUT、DELETE、OPTIONS和TRACE。

  前端性能优化十四个规则:

  1. 减少HTTP请求。

  a. 至少80%的最终用户响应时间花在了页面中的组件(图片、脚本、样式表、Flash等)上。

  b. 改善响应时间的最简单途径就是减少组件的数量,并由此减少HTTP请求的数量。这些技术包括图片地图、CSS Sprites、内联图片和脚本、样式表的合并。运用这些技术在示例页面上估计响应时间减少到50%左右。

  c. 图片地图:

  优点:允许在一个图片上关联多个URL,目标URL的选择取决于用户点击了图片上的那个位置。这样既能减少HTTP请求,又无需改变页面外观感受。

  缺点:在定义图片地图上的区域坐标时,如果采取手工的方式则很难完成且容易出错,而且除了矩形之外几乎无法定义其他形状。通过DHTML穿件的图片地图则在IE中无法工作。

  类型:图片地图有两种类型。服务器端图片地图将所有点击提交到同一个目标URL,向其传递用户单击的x、y坐标。Web应用程序将该x、y坐标映射为适当的操作。客户端图片地图将用户的点击映射到一个操作,而无需向后端应用程序发送请求。映射通过HTML的MAP标签实现。

  d. CSS Sprites

  e. 内连图片

  f. 合并脚本和样式表

  2. 使用内容发布网络(CDN)

  a. 内容发布网络(CDN)是一组分布在多个不同地理位置的Web服务器,用于更加有效地向用户发布内容。

  优点:缩短响应时间、备份、扩展存储能力和进行缓存、缓和Web流量峰值压力。CDN用于发布静态内容,如图片、脚本、样式表和Flash,提供动态HTML页面会引入特殊的存储需求——数据库连接、状态管理、验证、硬件和OS优化等,这些操作比较复杂。另一方面,静态文件更容易存储并具有较少的依赖性。

  缺点:响应时间可能会受到其他网站的影响,以及无法直接控制组件服务器所带来的特殊麻烦,且严重依赖CDN的服务性能。

  无论如何也不要使用HTTP重定向来将用户指向到本地服务器,这会使Web页面反应速度变慢。

  3. 添加Expires头

  a. Expires头

  浏览器(和代理)使用缓存来减少HTTP请求的数量,并减少HTTP响应的大小,使Web页面加载得更快。Web服务器使用Expires头来告诉Web客户端它可以使用一个组件的当前副本,直到指定的时间为止。它在HTTP响应中发送。

  缺点:因为Expires头使用一个特定的时间,它要求服务器和客户端的时钟严格同步。另外,过期日期需要经常检查,并且一旦这一天到来,还需要在服务器配置中提供一个新的日期。

  图片可缓存30天以上。

  样式表可缓存30天以上。

  脚本可缓存30天以上。

  b. Max-Age和mod_expires

  HTTP1.1引入了Cache-Control头来克服Expires头的限制。Cache-Control使用max-age指令指定组件被缓存多久。它以秒为单位定义了一个更新窗。如果从组件被请求开始过去的秒数少于max-age,浏览器就使用缓存的版本,这就避免了额外的HTTP请求。如果同时出现Expires头和Cache-Control max-age,max-age指令将重写Exipres头。

  mod_expires Apache模块,能够让Expires头像max-age那样以相对的方式设置日期。这通过ExpiresDefault指令来完成。

  c. 空缓存VS完整缓存

  指的是与页面相关的浏览器缓存的状态。

  d. 修改文件名

  为了确保用户能够获取组件的最新版本,需要在所有HTML页面中修改组件的文件名。嵌入版本号即可。

  4. 压缩组件

  a. 通过减小HTTP响应的大小来减少响应时间。

  b. 从HTTP1.1开始,Web客户端可以通过HTTP请求中的Accept-Encoding头来标识对压缩的支持。 Accept-Encoding:gzip,deflate。 如果Web服务器看到请求中有这个头,就会使用客户端列出来的方法中的一种来压缩响应。Web服务器通过响应中的Content-Encoding头来通知Web客户端,如:Content-Encoding: gzip。

  c. 网站会压缩其HTML文档、脚本和样式表等。图片和PDF不应该压缩,因为他们本来就已经被压缩了。试图对它们进行压缩只会浪费CPU资源,还有可能会增加文件大小。

  d. 压缩的成本有,服务器端会花费额外的CPU周期来完成压缩,客户端要对压缩文件进行解压缩。要检测收益是否大于开销,需要考虑响应的大小、连接的带宽和客户端与服务器之间的Internet距离。

  e. 代理缓存。在Web服务器的相应中添加Vary头。Web服务器可以告诉代理根据一个或多个请求头来改变缓存的响应。由于压缩的决定是基于Accept-Encoding请求头的,因此需要在服务器的Vary响应头中包含Accept-Encoding。Vary:Accept-Encoding。

  f. 如果拥有大量的、多变的用户群,能够应付较高的带宽开销,并且享有高质量的名声,请压缩内容并使用Cache-Control:Private。这禁用了代理,但避免了边缘情形缺陷。

  5. 将样式表放在顶部

  a. 尽量多使用link标签,少使用@impt标签。因为@impt标签规则必须放在其他规则之前,也有可能会导致白屏现象,即使把@impt规则放在文档的HEAD标签中也是如此。

  6. 将脚本放在底部

  a. 在下载脚本时并行下载实际上是被禁用的——即使使用了不同的主机名,浏览器也不会启动其他的下载。其中一个原因是,脚本可能使用document.write来修改页面内容,因此浏览器会等待,以确保页面能够恰当地布局。另外一个原因是,为了保证脚本能够按照正确的顺序执行。

  b. 脚本对Web页面的影响:脚本会阻塞对其后面内容的呈现,以及脚本会阻塞对其后面组件的下载。

  以下规则用于处理页面加载之后的性能问题。

  7. 避免CSS表达式

  min-width的兼容性

  width:expression(document.body.clientWidth<600?”600px”:”auto”); IE

  min-width:600px; 大部分浏览器

  存在问题:更新表达式

  a. 一次性表达式,在这一次执行中重写它自身。

  b. 事件处理器。

  8. 使用外部JavaScript和CSS

  纯粹而言,内联快一些。但现实中还是使用外部文件会产生较快的页面。因为JavaScript和CSS文件有机会被浏览器缓存起来。HTML文档通常不会被配置为可以缓存。另外,由于外联,HTML文档减小,HTTP请求的数量也不会增加。

  9. 减少DNS查找

  a. DNS缓存和TTL(Time-to-live)

  DNS查找可以被缓存起来提高性能。服务器可以表明记录可以被缓存多久。查找返回的DNS记录包含了一个存活时间TTL值。该值告诉客户端可以对该记录缓存多久。尽管操作系统缓存会考虑TTL值,但浏览器通常忽略该值,并设置它自己的时间限制。

  10. 精简JavaScript

  a. 精简是从代码中移除不必要的字符以减小其大小,进而改善加载时间的实践。

  b. 压缩,并建议使用gzip来完成压缩。

  c. 精简CSS。通常CSS中的注释和空白比JavaScript少。优化CSS——合并相同的类、移除不使用的类等。

  11. 避免重定向

  a. 重定向用与将用户从一个URL重新路由到另一个URL。

  b. 304并不是真的重定向——它用来响应条件GET请求,避免下载已经存在于浏览器缓存中的数据。

  c. 状态码301和302是使用得最多的。状态码303和307是在HTTP1.1规范中添加的。但是几乎没有人用303和307,绝大多数网站仍然在沿用302.301响应的示例如下:

  HTTP 1.1 301 Moved Permanently

  Location: stevesouders/newuri

  Content-Type: text/html

  浏览器会自动将用户带到Location字段所给出的URL,响应体通常是空的。不管叫什么名字,301和302响应在实际中都不会被缓存,除非有附加的头——如Expires或Cache-Control等要求它这么做。

  d. 重定向延迟了整个HTML文档的传输,在HTML文档到达之前,页面中不会呈现出任何东西,也没人有任何组件会被下载。在用户和HTML文档之间插入重定向延迟了页面中的所有东西。

  e. 当缺少结尾的斜线时发送重定向——它允许自动索引,自动转到默认的index.html上,并且能够获得与当前目录相关的URL。

  12. 移除重复脚本

  确保脚本只被包含一次。

  13. 配置ETag

  a. ETag(Entity Tag)实体标签是Web服务器和浏览器用于确认缓存组件的有效性的一种机制。

  b. ETag是HTTP1.1中引入的。ETag是唯一标识了一个组件的一个特定版本的字符串。唯一的格式约束是该字符串必须用引号引起来。

  c. ETag的加入为验证实体提供了比最新修改日期更为灵活的机制。

  d. 例如,如果实体依据User-Agent或Accpt-Language头而改变,实体的状态可以反映到ETag中。此后,如果浏览器必须验证一个组件,它会使用If-None-Match头将ETag传回原始服务器。如果ETag是匹配的,就会返回304状态码,使响应减小了1195字节。

  14. 使Ajax可缓存

  确保Ajax请求遵守性能知道,尤其应具有长久的Expires头。

标签:

热门标签
成都生活发布网 领会推广网 生活发布网 创美瘦身加盟费用 推广频道 知识频道 信息频道 资讯频道 产品频道 两性知识网 pc端是什么意思 zip code是什么意思 女王的圣水能喝吗 喝女王的圣水 小孩晚上喂姐姐吃鸡可以吗 黑色蕾丝女装 小鸟酱 探花七天长沙学院一字马 堕落校花自述经历 男生喜欢射口里应该吃掉么 怎么吃老婆的乳头 怎么吃女朋友的乳头最好 吃女子先吃哪个部位 吃女生先吃哪里 穿着泳衣吃撑大肚子 说一说被女生踩中要害的经历 192.168.233.1登录入口 中国动漫排行榜前十名 mate60pro有5g吗 1988年出生今年多大 三门峡市外国语高级中学 2美金是多少人民币 现在中国时间是几点? 现在几点几分 送你一朵小红花歌曲原唱 美国唯一一个三届总统 win10数字激活工具 广州上下九 小汽车摇号时间 上一任美国总统叫啥 步步惊心插曲 1刀 = 人民币 visualstudio官网 918资料 wpk透视挂是真的吗 阿卡丽得神秘商店 nba挑战规则是什么 高铁票价格为什么有高低 咖啡王子一号店结局 hhpoker德扑圈作弊器真的假的