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

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 条回复
chenjia404
2023-07-06 15:00:49 +08:00
加一个 cloudflare 的 cdn ,然后页面全部缓存在 cdn 。
zzzsy
2023-07-06 15:55:23 +08:00
放 vercel ,静态很快的
goldeye0351
2023-07-06 15:59:24 +08:00
我是用 notion 笔记当网站的数据库, 写完笔记, 就自动增量更新 blog 了.
<a href="https://mynotion.life">https://mynotion.life</a>
goldeye0351
2023-07-06 15:59:42 +08:00
我是用 notion 笔记当网站的数据库, 写完笔记, 就自动增量更新 blog 了.

https://mynotion.life
tLbf2p3UC4BM3H1N
2023-07-06 16:19:35 +08:00
改来改去发现,如果内容不好,谁关心你的页面,打不打得开重要吗?
内容质量第一,页面排版和速度倒是其次。
先搞出名气,再考虑体验。
dfkjgklfdjg
2023-07-06 17:18:16 +08:00
搞一个私有仓库,然后每次提交的时候执行一下 github action 自动编译然后推送到你的 `xxx.github.io` 仓库不就好了吗?
都不需要去管它了,每次用 md 编写玩文章之后点一下 push 后面的事情就交给 github 了。


如果要考虑速度的问题,不应该优先考虑 CDN 吗?直接读最近节点的静态文件,肯定比访问你的服务然后拼接完了再返回快啊。
divilbs
2023-07-06 17:36:32 +08:00
你的输出文章是否有人关注有人阅读,之后考虑你的“加速”吧
di1012
2023-07-06 17:47:52 +08:00
同意楼上说的,页面啥样不重要,重要的是内容!
xiaohui1219
2023-07-06 19:12:01 +08:00
用宝塔不挺好的吗,
zhhanging
2023-07-06 22:33:39 +08:00
@wuzhanggui #26 .content-container>.item .img 的 height: fit-content 去掉就好了,只有 safari 有这样的问题,手机 safari 横屏也是。就是 safari 把 height: fit-content 不知道为什么把高度设置成图片原始大小的高度了
harrozze
2023-07-06 23:34:06 +08:00
可以考虑 用户第一次访问时才转换 md =>html ,并且程序检测 两个文件的更新时间,发现 md 更新的时候,重新转换。这样你的 php 负载很小,大部分都可以 redirect 到 html 文件的 url 去。
harrozze
2023-07-06 23:37:57 +08:00
@harrozze #51 你想让第一个用户访问的时候也很流畅的话,就自己做真正的第一个用户。发布完 md 就去访问一下
harrozze
2023-07-06 23:41:51 +08:00
想起来有一种格式叫 shtml ,支持服务器端 include ,这样你的页头页尾等等就可以不用重新编译,只需编译内容页后,include 了
WhaleFall2020
2023-07-07 01:04:44 +08:00
@wdssmq 我是 hexo + github action build 一把梭,只需要维护存储 markdown 文件的目录 Git push 到 repository 上就触发 action 自动 build 对应的 github pages branch 。
xuelang
2023-07-07 08:07:26 +08:00
我的 https://selfboot.cn/ 也是 hexo ,本来放 github pages ,最近迁移到了 netlify ,自带 CDN 加速。
图片是放腾讯云 cos 上,没用 cdn 。图片压缩后,不用 cdn 速度也还可以。
coolloves
2023-07-07 09:11:34 +08:00
直接用 nginx 的 proxy_cache 就可以了吧
wuzhanggui
2023-07-07 09:52:09 +08:00
@zhhanging #50 感谢感谢,没想到搁楼主这儿划个水热心网友帮忙给解决问题😘
jaylee4869
2023-07-07 11:34:35 +08:00
我的博客直接基于 nextjs 做基于 markdown 的 ssg ,结合 html 的 ast 也可以在 markdown 中增加 jsx 组件和复杂的 dom (类似 mdx),放 GitHub 配合 Vercel CI/CD 和 serverless/edge function 花样能玩出很多,另外还套了 cloudflare cdn 大部分静态内容请求甚至都打不到 vercel 上,免费账户完全够用。

https://lawrenceli.me
naminokoe
2023-07-07 11:40:00 +08:00
没那么复杂,wordpress + Super Page Cache for Cloudflare 插件完事,全球同步

springwood.me
jianyang
2023-07-07 15:28:26 +08:00
那么请问在一百万数据的情况下

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

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

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

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

© 2021 V2EX