基本上head就这几个标签么:

<meta>、<link>、<title>、<script>、<style>、<base>.

它们没有(规范上的)既定顺序标准。
一般是按照具体经验来分配。
如:
  1. <meta>
  2. <title>
  3. <link> \ <style>
  4. <base>
  5. <script>

当然,约往后位置约不重要。比如 4 5 调换也没啥大事儿。
基本规律是:

  • meta 最好写在第一个,特别是 meta chaset 设定必须写第一个,它们是元数据,能让数据获取方得知此页面的元数据。最先得知页面编码,进而获取之后meta(如果有)内的作者、关键字等数据(因为这些内容可能是非ASCII字符)时,可以用指定编码方式获取。获取方得到全部元数据后可以自行判断是否继续获取其后内容。
  • title 紧随 meta 之后是因为可能获取方需要知道页面标题信息,并且在最先获取 chaset 信息后知道此标题的编码方式。如果获取方是页面浏览器,那么它可以最先用正确的页面编码方式显示标题给用户。
  • link、style 紧随 meta,其实还是主要为 link 大部分都是 CSS 样式文件考虑。由于外联样式可以并行下载,不会阻塞后续处理工作,style 也能让浏览器尽快得知页面排版布局信息。
  • base 一般情况下用的不多,只要不放第一个基本没啥关系。
  • script 放在最后,是基于script 不关是下载还是执行都会阻塞页面考虑,让它尽量偏后。(当然,这在绝大部分现代浏览器中不是事儿了,它会尽量"拖后"外联脚本下载时机)现在大多数情况没有特殊需求 script 都不放在 head 里了,而是放在 body 最后一个子节点上(也有给扔 html body 之外的,浏览器容错还是能给它修正回 body 最后节点上)。

大牛总结:

首先要指定编码,当然服务端也要指定编码,保持一致。
然后是对于可以切换内核的浏览器提示优先切换内核,诸如国内占比比较大的360浏览器6.0版本之后。然后是IE相关的浏览器使用其支持的最高版本的文档模式。
接着考虑可以使用viewport来支持不同尺寸和分辨率的设备。
关于页面相关说明,诸如作者可以在适当位置添加。
蜘蛛是否抓取索引的标志可以考虑添加。
接着是dns-prefetch缓存assets相关的域名。
如果你确定页面多数内容是弹出新窗口,那么可以指定页面的链接打开模式。
对于不支持或者禁用脚本的网站,可以使用转向带参数,请求无脚本时候的网站内容。
页面标题是页面必不可少的,同时也是蜘蛛索引的重要指标,可以考虑程序动态输出。
引入主要的样式文件,同时根据设备类型来引入设备相关的样式文件,以支持平板以及打印机。
前端脚本通过后端变量设置版本,以利于文档和静态资源的更新。
关于前置全局脚本,需要做到:
如果页面不作为iframe内容使用,要防止恶意被嵌套,发生误导或者钓鱼相关的事情。
如果使用类名作为钩子来告知页面程序是否支持调用,可以在此进一步处理。
对于旧版本的IE,这里特指版本小于等于IE8的老旧浏览器,如果要做优雅降级,那么需要再此做前置程序处理。
如果页面程序存在依赖数据来渲染的情况,前置的数据也推荐放置于此。
如果页面依赖脚本加载器,可以在此添加加载器脚本。
对于旧版本的浏览器可以使用IE条件注释配合shim脚本,以及respond来提供一些额外的功能支持,以减少写代码时的额外处理,以及保持一致性访问。
页面关键词和相关说明也是至关重要的,如果你做SEO的话。
如果你还要提供RSS以及PING,请也在此一并提供。
对于搜索引擎提供shortlink,以合并改版rewrite后的状况。

关于html页面head标签顺序的更多相关文章

  1. 从html页面加载顺序来更好的理解jquery初始化

    一,html页面加载顺序 1,用户输入网址(假设是个html页面,并且是第一次访问),浏览器向服务器发出请求,服务器返回html文件:2,浏览器开始载入html代码,发现<head>标签内 ...

  2. 20180911 关于页面加载顺序引发的JS的undefined/null错误

    引用: 百度知道-HTML+JavaScript执行顺序问题 这是我在学习JS滚动播放图片案例意外遇到的一个问题,代码完成后console弹出错误警告: Uncaught TypeError: Can ...

  3. Html页面head标签元素的意义和应用场景

    相信在html5之前,很少人会关注html页面上head里标签元素的定义和应用场景,可能记得住的只有"title"."keyword"和"descri ...

  4. Asp.Net正则获取页面a标签里的内容

    Asp.Net正则获取页面a标签里的内容 string url = "http://www.114369.com"; string html = MyCLib.NetClass.S ...

  5. Eclipse 新建.jsp页面后,页面头部标签报错的解决方法

    Eclipse 新建.jsp页面后,页面头部标签报错的解决方法 1.报错地方: 2.解决方法: .jsp页面右键==>BUild Path ==>Configure Build Path. ...

  6. javascript--获取一个页面各个标签的数量

    获取一个页面各个标签的数量 document.getElementsByTagName('*')--获取所有的标签. var obj = document.getElementsByTagName(' ...

  7. selenium 获取页面<input>标签的个数和各个属性的值

    获取页面某个标签的数量.id.name.class的值,来辅助定位         List<WebElement> lw =driver.findElements(By.tagName( ...

  8. 浏览器加载显示html页面内容的顺序

    我们经常看到浏览器在加载某个页面时,部分内容先显示出来,又有些内容后显示.那么浏览器加载显示html究竟是按什么顺序进行的呢 其实浏览器加载显示html的顺序是按下面的顺序进行的:1.IE下载的顺序是 ...

  9. html页面加载顺序

    页面总是从上往下执行 CSS为什么要放在头部 1.CSS可以和html一起同时进行解析和渲染 2.如果你把CSS放到body后面,不但没有跟html一起进行加载渲染,还要花费额外时间去加载CSS,这样 ...

随机推荐

  1. 《BI那点儿事》Microsoft 时序算法——验证神奇的斐波那契数列

    斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10 ...

  2. sqlserver -- 解决sqlserver2008“Prevent saving changes that require table re_creation(阻止保存要求重新创建表的更改)”的问题

    电脑重装了sqlserver2008 R2(英文版)后,新建数据表,新建字段,发现有个字段类型设置错了,想修改字段类型,而该表已经保存好了,即保存后修改字段属性.但无法保存修改后的设置,提示“Savi ...

  3. SharePoint Server 2013开发之旅(三):为SharePoint Server配置App开发、部署、管理环境

    上一篇我讲解了如何利用微软提供的Office 365开发人员网站,进行在线的SharePoint App开发,这当然是不错的一个选择,因为你可以快速地进行开发和调试.(仅仅针对App开发而言).但是, ...

  4. 用jQuery重置用于文件上传的input (type="file")

    页面中有如下标签: <input type="file" id="upload"/> 此标签本用于文件上传,现在有需要将其值重置为空.于是想当然地写 ...

  5. 机器学习&数据挖掘笔记_24(PGM练习八:结构学习)

    前言: 本次实验包含了2部分:贝叶斯模型参数的学习以及贝叶斯模型结构的学习,在前面的博文PGM练习七:CRF中参数的学习 中我们已经知道怎样学习马尔科夫模型(CRF)的参数,那个实验采用的是优化方法, ...

  6. 精品素材:15套免费的 Photoshop 自定义图形集

    网上到处都是 Photoshop 笔刷,图案,纹理素材,最缺少的就是 Photoshop 形状.寻找定制的 Photoshop 形状是真的很难,因为很少有人提供这样的 Photoshop 形状的集合. ...

  7. Swift泛型Protocol对比C#泛型Interface

    本篇纯属抬杠之作,之前我们提到了Swift的泛型Protocol使用associatedtype关键字,而不是使用<Type>语法的泛型参数.这其中有什么好处呢? 我就这个问题搜索了一些回 ...

  8. 【Swift学习】Swift编程之旅(二)

    在本节将介绍一些最基础的知识 swift提供自己版本的类型,下面说明几种简单的类型 Int 整型 Double和float 浮点型 String 字符串型 Bool 布尔型 它也提供了3种主要的强大的 ...

  9. 三、BLE(上)

    1.      BLE 1.1       模块构成与结构体层次关系 如上图所示,BLE模块有独立的application layer,这是因为该模块可以直接从BlueCore接收数据(通过GATT模 ...

  10. OpenJudge 2985数字组合 解析报告/DP

    2985:数字组合 总时间限制:  1000ms 内存限制:  65536kB 描述 有n个正整数,找出其中和为t(t也是正整数)的可能的组合方式.如:n=5,5个数分别为1,2,3,4,5,t=5: ...