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

2023-07-06 08:46:56 +08:00
 MFWT

背景

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

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

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

设想

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

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

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

一些疑惑之处

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

望不吝赐教

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

https://lxnchan.cn
mencounter
2023-07-06 08:59:04 +08:00
hexo+h2 ?
mencounter
2023-07-06 09:00:51 +08:00
错了是 pm2
aru
2023-07-06 09:02:32 +08:00
存储为 sqlite 数据库,然后生成 html 静态文件
sunxiaping521
2023-07-06 09:03:55 +08:00
很多 markdown 是转换为 json 格式的,然后通过 Mongodb 进行存储,并且这不是 mongodb 的优势吗?
aru
2023-07-06 09:04:38 +08:00
话说个人 blog 有啥访问量和数据量,
肯定用动态方便啊,写个 compose 一键拉起一键备份
sqlite 数据库很合适,备份方便,如果还是担心性能问题,就生成静态文件缓存,但是备份就不用了
tomiaa
2023-07-06 09:07:42 +08:00
可以参考我的博客,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
2023-07-06 09:19:00 +08:00
我的博客 https://blog.dumogu.top/
存的时候 markdown 原文和解析的都存,简介名称这些也存个,反正存个能读取出个列表的结构,启动的时候读取简单的列表,访问的时候后端就读取解析好的然后用个模板引擎啥的拼接好 html 发给前端(想省事的直接字符串拼接,反正就返回个 html 字符串嘛),就完事儿了,不用啥数据库,自己的博客也不考虑文章量大功能多的情况。
说前端解析的也可以,但是不用后端渲染的 seo 不好,保存文章啥的我前端先解析,耗费计算的就前端干,后端就接收字符串,存字符串,但是生成完好的 html 还是得后端拼接好
我的博客就是这么做的,快得很
zuijiapangzi
2023-07-06 09:37:25 +08:00
不太懂,有个东西叫 Gridea ,你可以看看
zhhanging
2023-07-06 09:39:16 +08:00
@wuzhanggui #11 抓个 bug 首页的文章图片在 safari 下拉伸严重
LavaC
2023-07-06 09:43:05 +08:00
@tomiaa 文章也是 git 提交的吗?那好像有点麻烦。我的博客也是这么搞的,因为想到每次写都得 git xxxx 就不想更新了。
wdssmq
2023-07-06 10:00:53 +08:00
Z-BlogPHP + MD + Git 飘过……

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

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

在这里唧唧歪歪,还不如多掏钱买个好点的 vps ,要么 hexo 免费部署到 github
Rache1
2023-07-06 10:29:11 +08:00
你用 WordPress 开 OpCache 再配上 SQLite ,再怎么的都不至于八九秒加载不出来吧。

大概率是 CSS 和 JS 和 一些大图阻塞了页面加载。
huolong
2023-07-06 10:32:06 +08:00
换个好点的服务器就再加上 CDN 速度应该还好吧。
https://vwo50.club/
我这个 2H4G 的,感觉速度也不错。
MFWT
2023-07-06 10:44:31 +08:00
@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