基本上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后的状况。

最新文章

  1. Git 版本库添加空目录方法
  2. IIS支持解析json
  3. JavaWeb学习笔记——JDOM
  4. HDU 1106 排序 题解
  5. JAVA图片处理--缩放,切割,类型转换
  6. BZOJ3687:bitset STL
  7. Eclipse快捷键 列表整理
  8. How I came to find Linux
  9. Excel导出问题(导出时不去掉前面的0)(转)
  10. get和eq的区别
  11. async: false的应用.
  12. Centos下Sphinx的下载与编译安装
  13. Java基础(面试题)
  14. 爬取微博的数据时别人用的是FM.view方法传递html标签那么jsoup怎么解析呢
  15. 20155331《网络对抗》Exp5 MSF基础应用
  16. Android------------UI的控件学习内容
  17. 51nod 1349 最大值
  18. Spring异步事件
  19. WebViewJavascriptBridge详细使用 iOS与H5交互的方案
  20. 【转】.NET 4.5 使用async和await关键字调用异步方法

热门文章

  1. java中如何生成可执行的jar文件
  2. [SDK2.2]Windows Azure Virtual Network (1) 概念
  3. ehcache报错
  4. 行列式(三):n阶行列式
  5. 30天C#基础巩固------读写流(StreamWrite/StreamReader)
  6. MVVM-Sidekick 之SendToEventRouterAction使用
  7. 【C#】让ReSharper灰色显示未使用的非私有成员的关键
  8. EF生成 类型“System.Data.Entity.DbContext”在未被引用的程序集中定义
  9. asp.net webapi 序列化为xml 时实体属性增加&lt;![CDATA[]]&gt;防止特殊字符
  10. 修正 ListView 搜寻问题