平台开发中,欢迎参与测试。你可以在 QQ群:1046115671 中与我们交流,或是直接在社区发帖

    2021年12月第一周周报

    • 孙锡源
      楼主

      首先是周报的频率后面改成每五天一次,无节假日(比如今天是12月1日,下次是12月5日),另外称呼由周报更改为项目发展报告。帖子命名格式:项目发展报告-2021-12-1。

      上周新的应用市场爬虫机制还没完全开发完,主要原因是应用市场应对插件和主题 Slug 重复问题的处理机制计划按老赵头的新方案重构一下,而新的机制牵扯到了爬虫的数据录入模块的录入逻辑,所以需要等处理 Slug 重复问题的机制重构完后才能继续应用市场爬虫的开发。

      之所以会 Slug 重复,是因为 wordpress.org 在架构上插件目录和主题目录是两个互相独立的站点,数据库也是分开的,但 litepress.cn 将二者都塞到了一个 Woo 商城里,所以二者的 Slug 就会产生冲突。

      之前为了解决这个问题,是装了 Permalink Manager 插件,然后为有冲突的插件和主题维护一套映射关系。老实说,机制复杂容易出错,而且也多装了一个在本平台应用场景有限却很庞大的插件,应用市场已经启用了将近 40 个插件了,实在是不堪重负,能省则省。于是基于以上两点原因,计划对此重构。

      新的方案打算默认在爬虫录入数据时就对 Slug 附加前缀,比如说:plugin-xxx、theme-xxx。然后在数据输出时再去掉前缀输出原始 Slug。理论上应该是可行的,但仍不十分肯定,所以需要先将这个功能重构完确定路线完全可行,之后再对应用市场爬虫机制应用新的数据录入机制。

      最后,原计划应用市场爬虫的数据采集录入模块使用 WordPress 的 Cron 驱动,但现在有了更棒的方案:我使用 WordPress 开发了一个常驻后台的守护进程,其监控一个 Redis Steam 队列,一旦 Slug 更新监控模块发现某个插件、主题更新,就会将 Slug 压入队列,当 Redis Stream 中存在数据时该进程就会结束阻塞状态,而开始他的工作流程。

      这样做的好处是省掉了 Cron 每次启动时加载 WordPress 框架的成本开支,因为新的守护进程只在进程启动时才会加载一次 WordPress 框架,之后一直在后台运行,只在需要的时候运行所需代码即可。这就好像 Java 的 SpringBoot 一样,既节省硬件资源又速度快。

      后续翻译平台的爬虫也会重构为这种常驻后台的守护进程。

  • 耗子
    管理员

    这周我这边打算做一下小程序市场,目前方案大致还是像应用市场那样,允许开发者自行上架小程序模板和配套的插件(插件需要接入LitePress设置框架),如有别的更好的想法,欢迎讨论!

  • 咸寒少
    参与者

    我的管理权限掉了 过不了翻译 再给一下呗

  • 正在查看 2 条回复
    • 哎呀,回复话题必需登录。

    加入 LitePress 论坛 ,参与知识分享与交流
    登录 注册 进行评论
    立即加入