众所周知的,BHB是一个处处卡的社区,哪哪都有BUG。
最突出的现象是加载速度巨慢巨卡。
首先我们随便找个帖子试一试
加载一个页面居然要近一分钟!
我们切到网络页面来看
可见都是些资源类的内容
例如js就包括了
<script src="plugin/abs_theme_stately/view/libs/jquery/jquery.js" data-filesize="832986"></script>
<script src="plugin/abs_theme_stately/view/libs/popper/popper.min.js" data-filesize="18795"></script>
<script src="plugin/abs_theme_stately/view/js/xiuno.js" data-filesize="60996"></script>
<script src="plugin/abs_theme_stately/view/js/bootstrap.js" data-filesize="144225"></script>
<script src="plugin/abs_theme_stately/view/libs/perfect-scrollbar/perfect-scrollbar.js" data-filesize="108755"></script>
<script src="plugin/abs_theme_stately/view/js/menu.js" data-filesize="13299"></script>
<script src="plugin/abs_theme_stately/view/js/main.js" data-filesize="4348"></script>
<script src="plugin/abs_theme_stately/view/libs/BS5Modal.js" data-filesize="8326"></script>
<script src="plugin/abs_theme_stately/view/libs/toast.js" data-filesize="2137"></script>
<script src="view/js/async.js" data-filesize="34730"></script>
<script src="plugin/abs_theme_stately/view/js/bootstrap-plugin.js" data-filesize="12485"></script>
<script src="view/js/form.js" data-filesize="1005"></script>
<script src="plugin/abs_theme_stately/view/libs/twemoji.min.js" data-filesize="16840"></script>
<script data-filesize="29">twemoji.parse(document.body);</script>
但是你一些没用的项目也加载他干嘛?例如twemoji你表情都下线了,真的还有用吗?qrcode你全页面一个二维码都没有,你加他干嘛?
再仔细观察可以发现,他们的耗时居然奇迹般的相似,部分资源甚至精确到了小数点后两位都相同。说明误差在正负十毫秒内,原因就是你服务端堵住了。
给个别的网站正常普通的例子
你看他们的差距,各个资源下载所需的时间都不同。
具体分析一个资源看看,例如main.js,
为什么前面队列(白条)等待那么久?因为前面在加载其他资源,前面耗时30秒那些内容,例如jquery和bootstrap等,其服务器响应时间(绿条)都要四五秒多,已经同时发了七个请求,都在干等待,你服务端不响应,就进入不到下载阶段(蓝条),后面的队列就只能一直的等。
再一个,你的绿条和蓝条都很长,响应时间下载时间都非常久,这是初次加载没有本地缓存的效果。二次进入本页面就快很多了,因为本机的浏览器帮你存了资源,所以直接返回200就出页面内容了。
注意到main.js只有1.8kB,耗时近四十秒;而另外的一些png图片,哪怕几kB都只需要400毫秒。为什么会导致响应时间下载时间耗那么久呢?显然是你CDN加载策略没搞对,类似js的资源在CDN里面没勾选,但是png的内容被勾选了,就导致加速的服务器没起到加速作用,不做二级缓存,每次访问还是去往你源站去取资源,当然就慢了。
另外对于一些固定版本的js库,你为什么不直接用类似于cdnjs.cloudflare.com直接获取呢?他们的都是全网公开的平衡稳定资源,没必要将js库存储在你的服务器上。
例如https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js
如果你的jq是特别改版,必须用自己服务器版的,也可以去你选用的CDN设置对应内容,这样也可以帮助快速访问,不要每次都从你原始站点获取了。
再仔细观察可以发现,有几个png也耗时很久,例如
等待和响应都很快了,但是下载难。这个文件大小也不过600kB,应该是你资源的路径问题,只会对部分内容加速,剩下的素材还得从原始站点去取。