Ghost 博客数据迁移

Ghost 博客数据迁移
Photo by Thomas Jensen / Unsplash

数据迁移导出

我的博客是基于 Ghost 部署的,开源免费,部署在个人服务器的,但是有时候会迁移或者重置服务器,就涉及到博客内容的迁移了。
迁移主要涉及两块,博文内容的导出,以及图片等资源文件的导出。

博文内容导出
在管理后台的 Advanced -> Import/Export -> Migration tools -> Export 里面,点击 Export content,会导出一个 JSON 文件,这个文件里面就是你的博文内容了。

CleanShot 2025-02-24 at 14.41.09@2x.png

图片媒体资源导出
对于博文里面的图片,视频等媒体文件,主题配置之类的,需要到存放这些内容的目录进行导出。
因为我之前是通过 Docker 部署的 Ghost,在 Docker 配置中可以看到挂载的内容目录。

CleanShot 2025-02-24 at 14.29.16@2x.png


然后从服务器上对应位置,把资源下载到本地备份

CleanShot 2025-02-24 at 14.31.35@2x.png

在服务器上先将 content-volumes 目录压缩 tar -czvf ghost_content.tar.gz content-volumes/,然后将其下载到本地。我这里使用的是 Cyberduck 来下载,操作比较方便。

CleanShot 2025-02-24 at 14.36.06@2x.png

数据迁移导入

博客部署好了之后,基于上述数据进行导入即可。
先进行博客文章的导入: 在管理后台的 Advanced -> Import/Export -> Migration tools -> Import 里面,点击 Universal import,导入刚才的 JSON 文件即可。

CleanShot 2025-02-24 at 14.49.06@2x.png


另外对于图片等资源文件,将之前从服务器上下载的资源再上传到服务器对应的位置即可。

Read more

从事 SEO 12 年的大佬总结的要点

从事 SEO 12 年的大佬总结的要点

从事 SEO 12 年后,以下是我能想到的所有 SEO 技巧: 1. 在 H1、H2 和 URL 部分中使用主要关键词。 2. 停止追逐虚荣指标。流量固然重要,但转化率才是最重要的。 3. 内部链接可以将“几乎完成”的页面转变为表现最佳的页面。 4. 定期检查你的网站是否有坏链接,这是一个简单的 SEO 胜利。 5. Google Search Console 是您最好的朋友,使用它来重新优化排名在第 3-7 位的页面。 6. 90% 的反向链接应来自相关的高权威网站。 7. 速度决定一切——或许应该说,速度不足会扼杀一切。确保加载时间在 2 秒以内。 8. 持续更新内容将帮助你的页面保持更高的排名。 9. 使用 NLP

Pnpm 构建 Monorepo

Pnpm 构建 Monorepo

最近开始搭建 monorepo 的项目,了解到以下方案: * lerna 有强大完善的依赖管理和构建、打包发布流程,而且 v5 版本将 nx 与 lerna 整合了,提升了性能和速度 * 业界大多使用 lerna + yarn workspace 的方式来管理,yarn 用来管理依赖,lerna 用于管理发布 之前简单使用过 lerna ,不过再加上 yarn workspace , 学习容多、配置多又得折腾,太费劲🤪,暂时搁置。 最终尝试使用单一的 pnpm workspace + changesets 的方式来构建 monorepo,本身我就使用 pnpm 作为包管理工具,目前我的场景简单,pnpm 就已足够。 本文记录自己使用 pnpm workspace 搭建 monorepo

HTTP Web 缓存总结

HTTP Web 缓存总结

友情提示:缓存什么的,是完全依赖相关http header头信息来标记和判断的 缓存读取顺序: 首先读取本地缓存,如果条件满足就取本地缓存,否则往后走代理缓存,同理,条件满足就是从代理缓存取资源(可能存在多级代理缓存) 如果一条链路上的资源都不符合,那么就去源服务器获取 缓存优先级:Cache-Control > Expires > Etag > Last-Modified 缓存的分类和优先级 * 强缓存 状态码 200 (比如 200 (from cache)) * Expires 服务器下发的绝对时间,而判断的时候以浏览器时间为准,客户端和服务器有可能会不一样 * Cache-Control 相对时间,以客户端相对时间为准 * 协商缓存 状态码 304 * Last-Modified If-Modified-Since * Etag If-None-Match 强缓存优先级高于协商缓存,强缓存不会询问服务器,直接使用缓存。协商缓存会询问服务器关于文件的可用性 对于传输过程中的中间节点,本文都称为代理服务器,包括proxy、

关于 Webpack 使用 Babel 与 Vite 使用 ESBuild 的一些思考

关于 Webpack 使用 Babel 与 Vite 使用 ESBuild 的一些思考

虽然 Vite 是基于 esbuild 构建的,并且 esbuild 在构建速度上有显著优势,但 Webpack 目前并没有直接使用 esbuild 构建的原因涉及多个方面,主要是 架构设计差异、功能需求 和 兼容性 等问题。下面是一些关键的原因: 1. Webpack 的复杂性与扩展性 • Webpack 的高度可扩展性:Webpack 的设计目标是一个 高度可配置和可扩展的打包工具。它提供了丰富的插件和 loader 机制,支持各种复杂的构建需求(如代码分割、热更新、各种资源处理等)。这些功能要求 Webpack 必须具备更细粒度的控制能力,而 esbuild 的设计理念相对简化,主要关注高速构建和基本的模块转换功能。 • Loader 和 Plugin 系统:Webpack 的强大之处在于其 loader 和