轻松使用 Laravel 中间件集成 HTTP/2 服务器推送
发布于 作者 Eric L. Barnes
众所周知,技术变化很快,如果你不经常停下来看看周围,你可能会错过它。 HTTP/2 是我们技术栈中一个我一直没有跟进的领域,老实说,直到 Laracon 我才对它有所了解,当时 Ben Ramsey 在这个主题上发表了演讲。
你可以在这里观看他的演讲 这里,他的幻灯片演示文稿也可以在他的网站上浏览。让我惊叹的是,通过利用服务器推送或 预加载,实施起来似乎非常容易。基本上,你发送一个特殊的“链接”头,包含所有页面资产,然后如果服务器和浏览器支持它,它们将以更高效的方式使用网络进行下载。
在 Ben 的演讲中,他举了一个如何在 Laravel 中使用它的例子,下面是一个方法
return response($content, $status)->header('Link', '; rel=preload; as=style', false)->header('Link', '; rel=preload; as=script', false);
当然,对每个资产都这样做有点麻烦。幸运的是,我们有两个 Laravel 软件包可以使用,它们将通过中间件自动处理此问题。
第一个是由 Tom Schlick 编写的,第二个是由 Jacob Bennett 编写的。这两个软件包基本上做的事情一样,但它们对集成方式有着不同的想法。
Tom 的软件包会自动在你的 elixir /build/rev-manifest.json
文件中包含资源。然后,要手动添加资源,你使用
pushStyle($pathOfCssFile);pushScript($pathOfJsFile);pushImage($pathOfImageFile);
另一方面,Jacob 的软件包更加自动化,因为它会扫描 DOM 并自动将任何脚本、样式或图像添加到头文件中。
你选择哪个将取决于你的项目和理想的工作流程。Jacob 的软件包是设置并忘记的风格,但必须扫描视图才能获取所有资产。而 Tom 的软件包则更加手动,但你可以控制所有方面。
如果你想提高 Laravel 应用程序的性能,可以试试这些软件包。