带你认识HTML meta & link标签

891 阅读1分钟

前言

在我作为前端开发者最开始的认知里,head标签的作用主要是在其中为HTML设置标签页标题、文档编码,以及引入CSS文件。但后来参加工作看到了像下面这样的HTML后,我开始意识到事情没这么简单

<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="utf-8">
    <title>Page Title</title>
    <meta name="description" content="an introduction to this web">
    <link rel="icon" href="https://xxx.com/icon.png" type="image/x-icon">
    <link rel="preconnect" href="https://xxx.com/" crossorigin>
    <link rel="dns-prefetch" href="https://xxx.com/">
    <meta name="screen-orientation" content="portrait">
    <meta name="x5-orientation" content="portrait">
    <meta name="format-detection" content="telephone=no">
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no, minimum-scale=1, maximum-scale=1, minimal-ui, viewport-fit=cover">
    <meta name="apple-mobile-web-app-capable" content="yes">
</head>
<body>
    <div id="root"></div>
</body>
</html>

深入学习发现,head通常可能包含的子标签有:

  • <title>
  • <script>
  • <style>
  • <meta>
  • <link>

前三者很常见不必赘述,本文主要介绍后两种我们熟悉而又陌生的标签:<meta><link>

<meta>标签

该标签的作用主要分为三种:

  1. 网页元信息:便于搜索引擎查找信息和分类信息,从而实现SEO优化
  2. 充当HTTP响应头:覆盖设置html请求对应的部分http响应头
  3. 移动端设置:如视口缩放、屏幕方向等

1. 网页元信息

<!-- 网页作者 -->
<meta name="author" content="aaa@mail.abc.com">

<!-- 页面关键词 -->
<meta name="keywords" content="kw1 kw2">

<!-- 页面描述内容 -->
<meta name="description" content="your description">

<!-- 定义网页搜索引擎索引方式,robotterms 是一组使用英文逗号「,」分割的值,通常有如下几种取值:
    `all`:文件将被检索,且页面上的链接可以被查询;
    `none`:文件将不被检索,且页面上的链接不可以被查询;
    `index`:文件将被检索;
    `noindex`:文件将不被检索,但页面上的链接可以被查询;
    `follow`:页面上的链接可以被查询;
    `nofollow`:文件将不被检索,页面上的链接可以被查询
-->
<meta name="robots" content="index,follow">

2. 充当HTTP响应头

<!-- 网页编码(以下两种等效) -->
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<!-- 将所有非跳转 (non-navigational) 的 HTTP 请求自动升级为 HTTPS -->
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

<!-- 3秒后自动重定向网址 -->
<meta http-equiv="refresh" content="3;url=https://www.mozilla.org">

3. 移动端设置

<!-- 移动端视口设置 -->
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />

<!-- 删除苹果默认的工具栏和菜单栏 -->
<meta name="apple-mobile-web-app-capable" content="yes" />

<!-- 设置苹果工具栏颜色 -->
<meta name="apple-mobile-web-app-status-bar-style" content="black" />

<!-- 忽略页面中的数字识别为电话,忽略email识别 -->
<meta name="format-detection" content="telphone=no, email=no" />

<!-- 启用360浏览器的极速模式(webkit) -->
<meta name="renderer" content="webkit">

<!-- 避免IE使用兼容模式 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">

<!-- 针对手持设备优化,主要是针对一些老的不识别viewport的浏览器,比如黑莓 -->
<meta name="HandheldFriendly" content="true">

<!-- 微软的老式浏览器 -->
<meta name="MobileOptimized" content="320">

<!-- uc强制竖屏 -->
<meta name="screen-orientation" content="portrait">

<!-- QQ强制竖屏 -->
<meta name="x5-orientation" content="portrait">

<!-- UC强制全屏 -->
<meta name="full-screen" content="yes">

<!-- QQ强制全屏 -->
<meta name="x5-fullscreen" content="true">

<!-- UC应用模式 -->
<meta name="browsermode" content="application">

<!-- QQ应用模式 -->
<meta name="x5-page-mode" content="app">

<!-- windows phone 点击无高光 -->
<meta name="msapplication-tap-highlight" content="no">

移动端视口设置的具体可选值 image.png

<link>标签

该标签的作用:

  1. 用于指示网页关联的外部资源,比如favicon、css等
<!-- favicon图标 -->
<link rel="icon" href="https://xxx.com/icon.png" type="image/x-icon">

<!-- css样式 -->
<link rel="stylesheet" href="https://xxx.com/index.css">
  1. 资源请求策略优化
<!-- 初始化时预加载资源,提升资源下载优先级(不会阻塞onload事件) -->
<link rel="preload" as="font" crossorigin type="font/woff2" href="myfont.woff2">

<!-- 空闲时预获取资源存入缓存,未来使用时直接读缓存 -->
<link rel="prefetch" as="script" href="https://cdn.bootcss.com/jquery/2.1.4/jquery.min.js">

<!-- 预连接,提前DNS查询以及建立第三方资源的TCP连接,便于后续直接传输HTTP报文 -->
<link rel="preconnect" href="https://xxx.com" crossorigin>

<!-- 
预获取DNS查询结果,便于后续直接开始TCP连接。
当不希望建立太多连接时可用此替代次要域名的preconnect,或者作为preconnect不被浏览器支持时的回退方案
-->
<link rel="dns-prefetch" href="https://xxx.com">

参考/致谢