资产预加载和资源提示与HTTP / 2和连接
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 5.2,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
连接管理组件)链接
HTTP头信息,提高应用程序性能的关键在使用HTTP / 2和预加载功能的现代web浏览器。
链接
标题中使用HTTP / 2服务器推送和W3C的资源提示推动资源(例如CSS和JavaScript文件)给客户之前,他们甚至知道他们需要他们。连接还允许使用HTTP 1. x的其他优化:
- 要求浏览器获取或呈现另一个web页面的背景;
- 早期的DNS查找,TCP握手或TLS协商。
重要的事情要考虑的是,所有这些HTTP / 2功能需要一个安全的HTTPS连接,即使工作在本地机器上。主要的web服务器(Apache、nginx盒等)的支持,但还可以使用Symfony的码头工人安装和运行时ob娱乐下载由凯文•Dunglas Symfony的社区。欧宝体育平台怎么样ob娱乐下载
传统的HTTP工作流后,当这个页面提供浏览器将一个请求的HTML页面,另一个请求相关的CSS文件。然而,由于HTTP / 2应用程序就可以开始发送CSS文件内容之前浏览器请求。
要做到这一点,首先安装连接组件:
1
美元作曲家需要symfony /网页链ob娱乐下载接
现在,更新模板使用预加载()
树枝函数提供的连接。的“作为”属性是强制性的,因为浏览器需要运用正确的优先级和内容安全策略:
1 2 3 4
<头>< !——……- - ><链接rel=“预”href=”{{预加载(' /应用程序。css,{:‘风格’})}}”>< /头>
如果你重新装载页面,感知性能会提高,因为服务器回应与HTML页面和CSS文件仅当浏览器请求的HTML页面。
请注意
你可以通过包装的预加载一个资产预加载()
功能:
1 2 3 4
<头>< !——……- - ><链接rel=“预”href=”{{预加载(资产(“构建/ app.css”))}}”>< /头>
此外,据重点提示规范,你可以信号优先的资源下载使用重要性
属性:
1 2 3 4
<头>< !——……- - ><链接rel=“预”href=”{{预加载(' /应用程序。css,{:“风格”,重要性:'低'})}}”>< /头>
链接HTTP头信息添加到响应。当使用预加载()
函数在上一个示例中,下面的标题添加到反应:链接< / app.css >;rel = "预加载”;=“风格”
根据预加载规范,当一个HTTP / 2服务器检测到原始(HTTP 1. x)响应包含HTTP头,它会自动触发一个推动相关文件在同一HTTP / 2连接。
受欢迎的代理服务和发布商包括ob直播appCloudflare,急剧和Akamai还利用这个特性。这意味着你可以把资源给客户和现在在生产中改进应用程序的性能。
如果你想防止推动但让浏览器预加载资源通过发行提前单独的HTTP请求,使用nopush
选择:
1 2 3 4
<头>< !——……- - ><链接rel=“预”href=”{{预加载(' /应用程序。css,{:“风格”,nopush:真正})}}”>< /头>
资源提示使用应用程序来帮助浏览器在决定哪些资源应该下载,预处理或连接到第一。
连接组件提供以下分支函数来发送这些提示:
dns_prefetch ()
:“表示一个来源(如。https://foo.ob直播appcloudfront.net
),将被用来获取所需资源,和用户代理应尽早解决”。preconnect ()
:“表示一个来源(如。https://www.pdashmedia.com
),将被用来获取所需的资源。启动早期连接,包括DNS查找,TCP握手,和可选的TLS协商,允许用户代理面具建立连接的延迟成本高”。预取()
:“确定所需的资源,可能是下一个导航,用户代理应该获取,这样用户代理可以提供更快的响应,一旦资源请求在未来”。prerender ()
:“确定所需的资源,可能是下一个导航,用户代理应该获取和执行,这样用户代理可以提供更快的响应,一旦资源请求之后”。
组件还支持发送HTTP链接实现与性能和任何联系PSR-13标准。例如,任何链接的HTML规范中定义:
1 2 3 4 5
<头>< !——……- - ><链接rel=“替代”href=”{{链接(' /索引。jsonld”、“备用”)}}”><链接rel=“预”href=”{{预加载(' /应用程序。css,{:“风格”,nopush:真正})}}”>< /头>
前面的代码片段将导致这个HTTP头被发送到客户端:链接:< / index.jsonld >;rel = "替代",< / app.css >;rel = "预加载”;nopush
您也可以将链接添加到HTTP响应直接从控制器和服务:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日24
/ / src /控制器/ BlogController.php名称空间应用程序\控制器;使用ob娱乐下载\包\FrameworkBundle\控制器\AbstractController;使用ob娱乐下载\组件\HttpFoundation\请求;使用ob娱乐下载\组件\连接\GenericLinkProvider;使用ob娱乐下载\组件\连接\链接;类BlogController扩展AbstractController{公共函数指数(请求美元请求){/ /使用通过addLink () AbstractController提供的快捷方式美元这- >通过addLink (美元请求,新链接(预加载的,' / app.css '));/ /选择如果你不想使用通过addLink()的快捷方式美元linkProvider=美元请求- >属性- >get (“_links”,新GenericLinkProvider ());美元请求- >属性- >集(“_links”,美元linkProvider- >withLink ((新链接(预加载的,' / app.css '))- >withAttribute (“是”,“风格”)));返回美元这- >呈现(“……”);}}