我们是如何修复损坏的博客预览的

我在 X 上发布了我们博客的链接。预览图看起来不对劲。它显示的不是技术文章的图片,而是一个销售横幅。

我检查了我们最近的七篇文章。它们都显示着同一个销售横幅。我们的工程深度解析文章看起来就像广告。这损害了我们的公信力。

问题很简单。我们的代码中有一个回退规则。如果文章没有特色图片,它就会使用默认的销售横幅。由于我们没有为 42 篇文章设置特色图片,导致每篇文章都使用了同一张图片。

我们有两个选择:

  • 方案 A:手动创建 42 张图片。这非常耗时,并且每发布一篇新文章都会增加额外的工作量。
  • 方案 B:构建一个动态图像生成器。它可以为每篇文章自动创建定制图片。

我们选择了方案 B。我们使用 PHP GD 构建了一个小型引擎。

以下是它的工作原理:

  • 引擎根据需求创建 1200x630 的 PNG 图片。
  • 它使用深色背景和文章标题。
  • 它从数据库中提取标题。
  • 在首次渲染后,它会将图片保存到磁盘。
  • 随后的每一次请求都会直接提供缓存文件。这使得它的速度非常快。

在构建过程中,我们解决了两个具体问题:

  1. 语言支持:仅使用像 Inter 这样的拉丁字体会导致日语文本显示为方块。我们增加了一个检查机制,在遇到日语标题时切换为 Noto Sans JP。

  2. 视觉基调:像 Vercel 或 PlanetScale 这样的专业技术博客都使用简洁的深色卡片。我们模仿了这种风格,以建立读者的信任。

给你的核心经验:

  • 检查你的社交媒体预览。使用工具检查你的 og:image 标签是否正常工作。
  • 避免为每篇文章手动制作插图。这无法规模化。
  • 使用简单的技术栈。PHP GD 加上磁盘缓存既轻量又高效。
  • 考虑到多语言需求。务必包含一个支持完整字符集的字体。

你的博客图片代表了你的品牌。不要让默认的回退机制毁掉你的第一印象。

出处:https://dev.to/susumun/implementing-a-dynamic-ogp-image-generator-for-our-blog-php-gd-per-post-1200-630-cards-46al