博客问题汇总
一些说明
-
网站这么慢的原因-
不存在了, 搬到国内了, 速度上来了
-
懒得搞 api, 直接使用的 rpc 形式的 server action, 导致页面 cache-control 用不上, 始终是 no-store, 页面没法静态化, revalidate 失效;
- 这个问题不想解决, 因为没人给我写后端, 而 next api 太孱弱, 新开一个 nest 项目又太麻烦, rpc 又太香了。。。
-
选用了 aws 海外版, 只部署了首尔一个节点, ssl 握手就要花好几秒。穷就一个字, 我只说一次;
- 这个问题理论上换到国内部署就能解决, 而由于 aws 有 amplify 便于部署, 所以也不想解决。。。
-
-
偶尔会显示 服务器错误 是什么鬼
- 大概率是超出了数据库最大连接数;
- 数据库免费时长只有 750小时, 所以只开了一个实例;
- 因为选用了免费的 aws mysql db.t3.micro 数据库, 1gb ram, 2 vCPUs, 最大连接数为 60, 而 Next.js Link viewport prefetch 导致并发请求, 由此导致数据库并发连接过高, 超出 max_connections;
- 服务端对 5xx 错误做了过滤, 统一显示 "服务器错误, 请稍后再试";
待采取的措施是: unstable_cache + 一个很长的过期时间 + 修改内容后自动更新相应的 unstable_cache 的 tag;- 已采取措施: 前台页面加 unstable_cache + 一个适当的过期时间, 以减少访问数据库;
- 参考 prisma 的建议, connection_limit 改成 1
- 取消使用 next/link prefetch
todos
-
通知从钉钉机器人改到电报机器人 (本来白嫖的公司的钉钉机器人,可是不知道是不是钉钉收紧了,直接 over limit 了。。。)(傻乎乎的,没有梯子,怎么用电报机器人。。。) - 架一个梯子
- 自动生成描述文本 (真的需要吗?)
- 编辑的缓存
- 账号过期机制
-
pre > code
添加复制按钮 - api 日志
- bf cache not working
- 全站音乐(页面跳转音乐不断)
- 全站字幕(页面跳转字幕不断)
-
tagList 加个背景,与其他部分分隔开(不需要) - 在自己的博文加上"编辑"按钮
- sitemap
- 添加 robots
- 添加 rss (参考: https://taoshu.in/webfeed/lets-webfeed.html)
- 标题(h1-h6)增加 hash & id, 支持点击修改 url
-
新增 TODO/road map 页(不需要了, 放在这个博文里) - 优化深色模式的实现逻辑(现在初次渲染时闪屏太严重了)
- 部署问题 (用了 aws, 一键解决了)
-
nginx(不需要了) - ssl
-
- 优化 a11y 及键盘导航
- 上传功能
- 非 admin 用户限制上传数量和文件大小 (注: 不支持非注册用户上传文件)
- 文件上传支持图片预览 (因为上传的主要内容就是图片)
- 支持粘贴式上传文件 (全站任意地方粘贴文件触发上传)
- 支持拖拽式上传文件 (全站任意地方 drag and drop 触发上传)
- 优化上传的交互 (如上传时的空状态等)
- 上传弹窗的关闭按钮改为完成
- react server component streaming with suspense
-
pwa 消息订阅与推送(不用 pwa 了) - 前端路由时, 页面 title 不会变化; ( 这儿说解决了, 解决个毛线... )
- 解决方案: 额外添加了前端修改 title
- 内容页的编辑按钮直接打开编辑弹窗
- 博文编辑完成后 revalidateTag
- 需要配置 next-image config, 考虑下是否需要 next/image
- 尝试把 title 放到article 中 (主要是考虑 UI)
- 401 默认弹出登录弹窗
- 统一弹窗 UX (存在部分弹窗关闭按钮在左侧)
- 目前统一在右上角, 除了博文编辑, 右上角放保存和预览按钮, 放不下关闭按钮了
- media 新增 loading 态
- 弹窗支持物理返回键 (物理返回键功能实现见 我给弹窗添加了支持物理返回键 一)
- 图片预览 (也支持物理返回键)
- 考虑一下网站搬到国内服务器
- s3 上的资源加缓存头
- 自动生成博文目录
- 固定图片尺寸 (可选方案: 尺寸信息放在 url 上)
-
添加谷歌收录 (国内域名本来就做了) - 自动评估阅读时长
-
新增 about me 页 (不需要, 直接放博文里吧) - 全站搜索功能 (当前支持博文搜索)
- 待支持功能搜索、页面搜索
- 新增 404 500 页面
-
回复功能 (站点在国内, 估计上不了这个功能了) - 一次性链接 (支持访问密码 + 访问时间限制 + 访问次数限制)
- 文章底部统一展示版权声明
-
资源管理页 (管理个毛线, 不需要了) - 添加友链页面
- 添加留言页面 (单向, 给站长留言, 其他人看不到)
bugs
- !!! 高危 !!! server action 缓存和 service worker 发生了化学反应, 具体原因待查; 表现是, 版本更新后, 本地访问到了旧的页面, 旧的页面引用旧的 js, 然而旧的 js 资源已经失效了, 导致页面崩溃
- 不用 pwa 了, html 也不用缓存了, 所以不会有这个问题了
- tags 上面的数量,需要仅计算 published 的博客
- 不可见博客的推荐阅读,第一条就是它自己
- 博客编辑中,默认没有填充标签
- md mui Autocomplete 自己有 bug, Chip 没加 key, 导致控制台一直报红色 warning, 很烦
- tag/hash 页 tagName 颜色有误
-
mui Stack
注意换行问题 - 在 pwa 应用中通过 target _blank 打开站内链接偶现直接展示出了 post response
- 原因: 不是 post response, 是 get response, 因为在 next.config.js 中为页面设置了 cache-control, 浏览器直接读取了本地缓存...
- 解决方案: 页面不缓存了...
-
pwa 封面图背景色有误(不用 pwa 就不管了) - revalidateTag 更新内容后, 本地 pwa 没有更新, 导致刷新页面和前端路由切换页面时的数据不统一
- 不用 pwa 了
-
/blog/[hash]
页面缓存仍有问题unstable_cache
博客修改之后要更新一堆的东西, 考虑一下别用了- 国外接口耗时太久, 站点放到国内就没有这个问题了
- 登录过期导致的 401 未能弹出登录弹窗
- 更新博客后的
router.refresh()
not work- 国外接口耗时太久, 站点放到国内就没有这个问题了
解决方案
-
dark mode 解决方案:
-
nextjs 13 dev 模式下特别慢
- https://github.com/vercel/next.js/issues/46756#issuecomment-1478038089
- 改
import { XXX } from '@mui/icons-material'
为import XXX from '@mui/icons-material/XXX'
- 避免 barrel files, 如果一定要, 建议 https://github.com/vercel/next.js/issues/12557#issuecomment-696749484
疑问
- 数据库的连接是怎么回事? 是不是我只要从数据库取一次东西, 就会占用一个连接?
- 答: 部分正确, 查询完成后, 会将连接释放到连接池中可供后续请求使用; 所以当有并发请求时,数据库连接可能会过高','博客问题汇总','PUBLISHED','本博客待新增的 feature、待解决的 bug、已解决问题的解决方案的一个汇总