一波更新
1. 升级 PHP 7.4
升级了网站的基础设施,新版的上传插件增加了一个识别 exif 的 orientation 标记,自动纠正图片的功能,需要 PHP 的 exif
扩展,否则会报错。
![](https://static-img.0xffff.one/8F8XahIxJj_0IC6PT1QgJ0xOdubTTpuzxOXT8FQRGpI/q:90/w:800/rt:fit/aHR0cHM6Ly9zdGF0/aWMuMHhmZmZmLm9u/ZS9hc3NldHMvZmls/ZXMvMjAyMC0wNC0w/NS8xNTg2MTAyMzgy/LTQ0Nzg0OS1pbWFn/ZS5wbmc.jpg)
恰好 PHP 正式发布了最新的 7.4 版本,带来一波性能优化。所以把容器镜像升级到了最新的 php:7.4-fpm-alpine。
2. 增加 LaTeX 公式支持
如 本帖所述,一个乌克兰小哥开发了基于 KaTeX 库 的插件 MathRen for Flarum,这里引了进来。
现在编辑器底部有一个公式的功能,分别支持:
- 块级公式 Block Expression(单独成行)
- 行内公式 Inline Expression(与文字混排)
在编辑器底部可以看到:
![](https://static-img.0xffff.one/GFW0uno_ursldQ4-qSPlNllg2vwrUWkZcDYg7TwxZzM/q:90/w:800/rt:fit/aHR0cHM6Ly9zdGF0/aWMuMHhmZmZmLm9u/ZS9hc3NldHMvZmls/ZXMvMjAyMC0wNC0w/NS8xNTg2MTAxNzgy/LTgyNjQ2NS1pbWFn/ZS5wbmc.jpg)
修复了一些交互细节问题,另外做了一点性能优化:
这个插件在前端引入了 KaTeX 包里包括字体在内的所有文件,打包后的 js 一下增加了 250+KiB,让人难以接受。
![](https://static-img.0xffff.one/LTi6URLAsHDiuafsmdlE3MDD_7DooNkzolyvyreRXow/q:90/w:800/rt:fit/aHR0cHM6Ly9zdGF0/aWMuMHhmZmZmLm9u/ZS9hc3NldHMvZmls/ZXMvMjAyMC0wNC0w/NS8xNTg2MTAxNDYy/LTY4MDQ2MC1xcTIw/MjAwNDA1MjM0MjQx/LmpwZWc)
为保持站点的打开速度,让它用 JsDelivr 的 CDN 单独异步加载,优化后 257 KiB 的 forum.js
降低到了 10 KiB。
3. 尝试换掉 moment.js
moment.js 是 JavaScript 里一个处理日期时间的类库,它的功能十分强大,但代码体积巨大,参考:
you-dont-need/You-Dont-Need-Momentjs: List of functions which you can use to replace moment.js + ESLint Plugin
实际上很多功能我们是用不上的,尝试把 moment 换成 dayjs,换掉后可以带来压缩后 40KB 的收益。但帖子详情页用到了 moment.js 提供的 duration
API,dayjs 没有支持。
Feature request: Add Duration Plugin · Issue #564 · iamkun/dayjs
等 dayjs 有了支持再换 = =
btw:这个 Feature 实现之后可以拿 110 多刀(到目前为止),有兴趣的话可以搞起啊!
![](https://static-img.0xffff.one/mTBXx4OiQ4zyS4S8Bb4TimL_Xh1_NSDhWNm5f2idFt0/q:90/w:800/rt:fit/aHR0cHM6Ly9zdGF0/aWMuMHhmZmZmLm9u/ZS9hc3NldHMvZmls/ZXMvMjAyMC0wNC0w/NS8xNTg2MTAyODQ4/LTI3MDQ2My1pbWFn/ZS5wbmc.jpg)