请教各位大佬的个人博客(或别的网站),使用『内容缓存』的好方法

311 天前
 MFWT

背景

手头有一个写到一半的纯静态博客,由于手动生成 HTML 文件太麻烦,也不好维护,打算改成 PHP 动态生成

当初为什么选择纯静态,原因在于,我考虑着,静态页面对 VPS 的负荷要求应该会低一些(我曾经用过超低配服务器建站,打开 WordPress 都要八九秒那种),但是纯静态页面的一些缺点(比如在线编辑较麻烦,文件内容大量重复等)让我最终选择回了动态页面

诚然,动态页面需要吃服务器资源,但是考虑到我能有的服务器都是『有计算资源,但不强』的状态,因此还是多少想利用下的

设想

博客使用 MarkDown 编写,服务器在保存 MD 原文的同时解析好 HTML 内容(用 ParseDown 库),同样存储起来

访问时,取出正文部分的 HTML ,和其他 HTML 块(比如 head/footer 部分)组合起来后再返回给用户

我设想中的和 hexo 之类的静态博客的区别是,hexo 会预先解析好整个 HTML 页面,但是我的仅仅解析正文部分

一些疑惑之处

  1. 像这样预先解析好一部分内容,对比完全用的时候再解析 MD ,性能节省程度明显吗?
  2. 解析前和解析后的内容都需要存储,那么是写入文件好(可能会有权限问题?)还是在 MySQL 中以 LongText 字段存储好?

望不吝赐教

4514 次点击
所在节点    程序员
63 条回复
blankmiss
311 天前
hexo 不是直接把 markdown 转为 html 吗
5ibug
311 天前
md 大多都是前端解析
LeegoYih
311 天前
纯 Markdown 可以试试 Docsify
https://docsify.js.org/
LxnChan
311 天前
hexo ,直接编译成静态 html ,没办法从编译好的 html 逆推回 markdown ,重写了文章或主题需要重新编译,变化比较小的话支持差异编译,相对比较快,编译过程均在本地,云端不参与任何 markdown 解析和(或)动态内容解析。

https://lxnchan.cn
mencounter
311 天前
hexo+h2 ?
mencounter
311 天前
错了是 pm2
aru
311 天前
存储为 sqlite 数据库,然后生成 html 静态文件
sunxiaping521
311 天前
很多 markdown 是转换为 json 格式的,然后通过 Mongodb 进行存储,并且这不是 mongodb 的优势吗?
aru
311 天前
话说个人 blog 有啥访问量和数据量,
肯定用动态方便啊,写个 compose 一键拉起一键备份
sqlite 数据库很合适,备份方便,如果还是担心性能问题,就生成静态文件缓存,但是备份就不用了
tomiaa
311 天前
可以参考我的博客,kuangyx.cn
vue 写的 md 文件,在 build 的时候会编译成 静态的 html 文件
前端在访问的时候影响速度的就是
1 、库文件
2 、文件图片 src
3 、静态资源
我目前是这样做的
1 、可以把大文件放在 github ,再部署成 github page 做一个外链,目前文件和图片、资源都是这样做的,可以参考我弄的 live2d ( https://kuangyx.cn/docs/%E6%96%87%E7%AB%A0/JS%20Lib/Live2d.html ),和游戏的 ROM ( https://kuangyx.cn/pages/game.html
2 、https://www.jsdelivr.com/可以用 cdn 引用 github 仓库的文件
3 、图片、js 文件懒加载
wuzhanggui
311 天前
我的博客 https://blog.dumogu.top/
存的时候 markdown 原文和解析的都存,简介名称这些也存个,反正存个能读取出个列表的结构,启动的时候读取简单的列表,访问的时候后端就读取解析好的然后用个模板引擎啥的拼接好 html 发给前端(想省事的直接字符串拼接,反正就返回个 html 字符串嘛),就完事儿了,不用啥数据库,自己的博客也不考虑文章量大功能多的情况。
说前端解析的也可以,但是不用后端渲染的 seo 不好,保存文章啥的我前端先解析,耗费计算的就前端干,后端就接收字符串,存字符串,但是生成完好的 html 还是得后端拼接好
我的博客就是这么做的,快得很
zuijiapangzi
311 天前
不太懂,有个东西叫 Gridea ,你可以看看
zhhanging
311 天前
@wuzhanggui #11 抓个 bug 首页的文章图片在 safari 下拉伸严重
LavaC
311 天前
@tomiaa 文章也是 git 提交的吗?那好像有点麻烦。我的博客也是这么搞的,因为想到每次写都得 git xxxx 就不想更新了。
wdssmq
311 天前
Z-BlogPHP + MD + Git 飘过……

wdssmq/Markdown-To-Z-Blog: 使用 GitHub Actions + Markdown 更新 Z-Blog 博客。#md2zb
https://github.com/wdssmq/Markdown-To-Z-Blog
lwrench
311 天前
我想你说的应该是 ssg ?现在很多文档站都是
lete
311 天前
不是很明白你这句话 (比如在线编辑较麻烦,文件内容大量重复等)

1. 同样是打开电脑写文章,要不要在线编辑都一样,一个是在电脑里打开 markdown 编辑器,一个是打开浏览器,输入网址,登录,写文章。(难道你是要在手机上写文章?)
2. 又不想让 vps 解析 markdown 又想直接得到 解析后的 html 文件,还吐槽文件内容重复,一个网站基本上很多页面局部部分都是重复的,不可避免,只有主要部分是变动的,比如文章内容是变动的,其它导航栏、页脚都一样

在这里唧唧歪歪,还不如多掏钱买个好点的 vps ,要么 hexo 免费部署到 github
Rache1
311 天前
你用 WordPress 开 OpCache 再配上 SQLite ,再怎么的都不至于八九秒加载不出来吧。

大概率是 CSS 和 JS 和 一些大图阻塞了页面加载。
huolong
311 天前
换个好点的服务器就再加上 CDN 速度应该还好吧。
https://vwo50.club/
我这个 2H4G 的,感觉速度也不错。
MFWT
311 天前
@lete

1. 是的,比如这篇主题,就是在手机上完成的(外出逛街的时候,或者排队的时候写两句)
2. 我从来没有说不想让 VPS 解析 MD ,我只是考虑『用户访问时(可以是前端,也可以是后端)解析』还是『站长写完后缓存解析结果,用户直接访问』这两个的问题而已

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/954453

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX