去年开始我在上海当沪漂,可以说是相当艰苦的。住的穷酸滚地龙,美术课半途而废,最后找工作又被忽悠到三线城市。
但整体而言我又是幸运的,长三角地区环境可以说是相当舒适,这一带的人又非常客气和善。
最近又思考一个问题,三线城市这半年结束以后,我该何去何从?
个人判断是这样,我家除了在北京有房,别的地方都买不起,即便去漂也是居无定所的租房生活。
那这样不如把北京作为常驻地,其余地方作为短暂居所,严格来说就是——居无定所,哪里都是工作地,哪里都是家。

发现Vercel(now.sh)又开启了香港节点,速度非常快,于是用它做个反代。
这个属于静态空间,支持Serverless但我没用到,直接用了vercel.json配置rewrite,这样效率最高。
教程可以看官方document,不过并不是所有网站都适用,程序必须像astro.php这样支持动态路由。
也就是说,市面上常见的Wordpress、Typecho、Zblog、Emlog这些,都不能使用。

之前astro这个程序很多文件是独立的,core中包含t.php/b.php一类,view又有对应的前端文件,自以为这样每次require能减少读取的代码量。后来发现opcache这类缓存开启后,php代码直接进内存,每次周期一过只会检查时间戳。这样的话当然是文件越少越好,不用检查多个php文件的时间戳了,把所有代码都整合进astro.php也更加便携。

因为图像采用分布式存储,程序后台可以生成一个popic.php配置文件,然后放进存储服务器中,进行图像压缩等操作。后来发现这么搞很费工夫,每次程序升级后都要重新生成一遍然后覆盖所有服务器。这样不如直接写进astro.php,把跟主站同样的内核文件扔进存储端,直接担负起图片上传和对接的任务,岂不是美滋滋。

最后考虑到前后端分离,那么astro.php就是起到一个输出数据的作用。如果由index.php(默认前端)直接require,则用在php内返回数组。其他方式例如使用api获取,则返回json。这样也可以直接对接目前很流行的Serverless,无论前端使用什么语言(Python/Node.js/Go),都可以直接去请求后端API。

那么astro.php拥有的功能就变为:

  1. 程序自检和安装引导。
  2. PHP直接require,执行function,输出array。
  3. API方式post,执行function,输出json。
  4. 操作PDO数据库,读写MySQL/MariaDB。
  5. 操作本地文件,可用于服务端。默认文件直接存本地,需要分离时无缝迁移。
  6. 输出astro.js伪静态JS库。

程序包原装配套文件:

  1. astro.php - 全功能后端+PHP函数库,可输出。
  2. index.php - 默认前端路由,可直接由类Serverless前端(CFWorkers)替换。
  3. index.css - 默认前端样式,可随前端结构变化而改变。

理想效果:
极简的同时实现高性能。
下载3个文件,扔进服务器,即开即用。
网站扩张后,复制内核文件到第三方服务器,实现分布式存储建立或分离。
前端样式自由定制,亦可利用API实现Serverless对接。