首页 » SEO优化 » php设置优先推送技巧_PHP开拓做事器推送其实就是如斯简单二

php设置优先推送技巧_PHP开拓做事器推送其实就是如斯简单二

访客 2024-12-11 0

扫一扫用手机浏览

文章目录 [+]

在上一篇文章(做事器推送实在便是如此大略)中,我们已经知道,在 Web 运用中,浏览器和做事器之间利用的是要求 / 相应的交互模式。
这种办法的不敷之处在于:做事器端产生的数据变革不能及时地关照浏览器,而是须要等到下次要求发出时才能被浏览器获取。
目前常见的办理办法紧张可以分成两类。
一类是不该用 HTTP 协议的做法,即利用 HTML 5 新增的 WebSocket 规范;另一类是利用 HTTP 协议的做法,包括大略单纯轮询、COMET 技能和 HTML 5 做事器推送事宜。

下面就着重先容下HTML 5 做事器推送事宜。

php设置优先推送技巧_PHP开拓做事器推送其实就是如斯简单二

什么是HTML 5 做事器推送事宜

做事器推送(server push)指的是,还没有收到浏览器的要求,做事器就把各种资源推送给浏览器。

php设置优先推送技巧_PHP开拓做事器推送其实就是如斯简单二
(图片来自网络侵删)

比如,浏览器只要求了index.html,但是做事器把index.html、style.css、example.png全部发送给浏览器。
这样的话,只须要一轮 HTTP 通信,浏览器就得到了全部资源,提高了性能。

做事器推送事宜示意图

传统的网页要求办法是什么样的

如上图所示,在传统的网页要求办法之下,如果要显示index.html页面,浏览器会发出三个要求。
第一个要求是获取index.html标签构造。

做事器收到这个要求,就会把index.html标签构造发送给浏览器。
当浏览器创造里面包含了样式表和图片后,它会再发出两个要求,以获取样式表和图片。
如下:

传统的网页要求办法有两个问题,

一是至少须要两轮 HTTP 通信。

二是收到样式文件之前,网页都会显示一片空缺,这个阶段一旦超过2秒,用户体验就会非常不好。

针对以上问题,有人提出如下办理方案:

一种办理办法便是把外部资源合并在网页文件里面,减少 HTTP 要求。
比如,把样式表的内容写在<style>标签之中,把图片改成 Base64 编码的Data URL。

另一种方法便是资源的预加载(preload)。
即网页预先见告浏览器,下个页面须要哪些资源,让浏览器先把这些资源下载下来。
如下:

这两种方法,虽然在一定程度上,办理了问题,但实际上它们都有缺点。

第一种方法虽然减少了 HTTP 要求,但是把不同类型的代码合并在一个文件里,违反了分工原则。

第二种方法只是提前了下载韶光,并没有减少 HTTP 要求。

在此情形下,做事器推送事宜应运而生。

做事器推送事宜的实现办法

做事器推送事宜的实现有多种办法,既可以利用Nginx实现,也可以利用Apache实现,还可以利用后端脚本实现。

1、利用Nginx实现

首先,进入事情目录,把原来默认的首页index.html删除。

然后,新建html/index.html文件,写入本文第一节的网页源码。

其余,html子目录下面,还要新建两个文件example.png和style.css。
前者可以随便找一张 PNG 图片,后者要在里面写一些样式。

末了,打开配置文件conf/conf.d/default.conf,将 443 端口的部分改成下面的样子。

在上图中,末了两行的http2_push命令,它的意思是,如果用户要求根路径/,就推送style.css和example.png。

启动做事器,打开浏览器,访问 https://127.0.0.2:8081 ,就能看到网页了。

把稳:网页上看不出来做事器推送,必须打开\"大众开拓者工具\公众,切换到 Network 面板,就可以看到实在只发出了一次要求,style.css和example.png都是推送过来的。
如下:

2、利用Apache实现

利用Apache实现做事器推送的操作,如Nginx差不多,可以在配置文件httpd.conf或者.htaccess里面打创办事器推送。
如下:

3、利用后端脚本实现

通过上面讲解,我们知道,无论是利用Nginx实现,还是利用Apache实现,实在现操作,都须要写在做事器的配置文件里面。
这显然很未便利,由于每次修正后,你都要重启做事,而且运用与做事器的配置也不应该混在一起。

那么有没有一种,可以不在做事器配置文件里操作,就能实现的方法呢?答案是,有的,这便是利用后端脚本实现。
利用后端脚本实现,便是后端运用产生 HTTP 相应的头信息Link命令,做事器创造有这个头信息,就会进行做事器推送。
如下:

如果要推送多个资源,就写成下面这样。

利用后端脚本实现做事器推送事宜,不分措辞,像PHP、Java、Python、Node、Go……等后端措辞都行,只要能改变要求的相应头信息就可以。
如PHP的实现办法:

把稳事变

做事器推送事宜有一个很麻烦的问题,便是要推送的资源文件,如果浏览器已经有缓存,推送便是摧残浪费蹂躏带宽。
纵然推送的文件版本更新,浏览器也会优先利用本地缓存。

Nginx 官方此问题,给出了它的办理方案,也便是根据 Cookie 判断是否为第一次访问,只有第一次访问才开启做事器推送事宜。

其余,虽然做事器推送可以提高性能。
但根据网上测评的结果来看,提升程度也不是特殊多,大概是几百毫秒。
基于此,不建议一次推送太多资源,由于这样反而会拖累性能,推举只推送CSS 样式表。

本文参考了“阮一峰博客”的《HTTP/2 做事器推送(Server Push)教程》文章

标签:

相关文章