Nucleus 标志核
‹ 所有用例
扁平化 · 已翻译的 SEO 缓存

爬虫程序 目前看到的已翻译页面。

Flatten 为搜索引擎和 AI 爬虫提供每个翻译页面的现成副本。 该副本只有在与实际网站内容一致时才有用。 这是同一时刻两个站点上的同一个缓存:一个由 Nucleus 和 Dispatch 保持最新,另一个由工程师设置的 cron 作业保持最新。 这也是产品团队在产品团队做出任何承诺之前,通过现场团队对真实客户进行测试来填补的产品空白。

当前99.84% 每小时重新排队 模型调用0 每次运行成本0 美元
核心 + 调度
当前完成度: 99.84% · 20,728 个网址中的 20,694 个
仅剩 34 个 过期产品,最后被压扁: 数小时内
手工编写的定时任务
当前完成度: 23.8% · 8,474 个网址中的 2,014 个
6,460 个过时的旧渲染图: 7 个月前
01

Flatten 对翻译网站的作用

GlobalLink Web 将客户的网站翻译成他们销售产品所使用的所有语言。 页面加载时,用户的浏览器会获取翻译结果。 爬虫程序的情况则有所不同:许多搜索引擎和人工智能爬虫程序会读取 HTML 代码,但不会运行页面脚本,因此它们会看到未翻译的原文。

不压平

爬虫程序请求德语页面。

  • 它会获取源 HTML,但翻译仍待应用。
  • 它不会运行应用该脚本。
  • 它索引德语网址上的英文文本
  • 因此,该翻译网站在德语搜索中几乎不存在。

✓ 带扁平化

译文已完成。

  • 每个翻译后的URL都会预先渲染一次。
  • 最终生成的 HTML 代码已被缓存,目前已是德语版本。
  • 爬虫程序会立即获得缓存副本。
  • 搜索和人工智能答案显示页面为德语
未缓存挂号的

该URL已被缓存,但尚未渲染。

已排队等待渲染

已准备好渲染。 URL不会自动跳转到这里。

缓存当前的

网络爬虫会获取页面当前的翻译版本。

陈旧过时

源页面在渲染后发生了变化,所以爬虫程序仍然获取到的是旧版本。

该平台能够检测源页面何时发生更改,并将其缓存的副本标记 为过期。 它不会自行重新渲染它们。 必须有某种因素促使他们重新回到队列中。新页面必须先注册才能进行渲染。 每个客户都需要有人或某种方式来长期提供这种服务。 本页介绍的是谁或什么执行了这项操作。
02

过期缓存会给客户带来多大损失?

过期的页面看起来并不像是坏的。 它会显示上次生成的翻译,所以直到有顾客用德语搜索并找到上一季的目录时,才会有人注意到。

错误的事实

旧价格,旧产品

已停产的产品、上个季度的价格或已过时的政策会在每种语言中保留索引,并且只要缓存保持过期状态,它就会一直存在,而不仅仅是到下一次抓取为止。

缺少页面

新页面永远不会出现

从未注册过的页面永远不会被渲染,因此发布页面或新产品线在搜索结果中根本没有翻译版本。

人工智能回答

助手引用旧页面

AI爬虫读取的是相同的缓存副本,因此其他语言中关于该品牌的答案是根据客户已经替换的内容构建的。

购物及商户中心

过时的页面会让你失去市场

在线商店会向 Google Merchant Center 发送每个国家/地区的商品信息流,其中包含价格和库存信息。 然后,谷歌会抓取每个产品的着陆页,并检查该页面是否与信息流匹配。 在已翻译的商店中,执行该检查的爬虫会获取扁平化副本。

如果该副本已过时,德语页面仍显示上一季的价格,或者显示补货商品已售罄。 该产品因价格或供货不符而被拒收并且它从德国的购物广告和免费列表中消失了。 这正是该译本原本应该赢得的市场。

如果开启自动商品更新功能,结果可能会更糟:谷歌可能会重写商品信息以匹配其抓取的内容,并向购物者显示过时的价格。 持续的不匹配也可能使整个商户中心账户面临风险。

产品饲料·DE 黑色旅行垫 79,00 欧元有货
≠
Google 已抓取此着陆页 · 7 个月前渲染 Reisematte,schwarz 89,00 欧元已售罄
不予批准 · 价格不匹配,供货不匹配 · 德国
缓存生效后,爬虫可以看到今天的页面,信息流匹配,列表保持在线状态。
03

两个缓存,同一时间,被过滤成过期数据

这两个视图均来自产品自身的扁平化屏幕,状态过滤器设置为 “陈旧” 。 以下主机名和路径已替换为相同格式的虚构主机名和路径,计数和年龄与记录一致。

企业软件网站

20,728 个网址中的第 34 个
六个本地化域 · 由 Nucleus + Dispatch 维护
URL最后扁平化状态
kr.example.com/events 10 小时前已过期
kr.example.com/partners/program 8 小时前已过期
www.example.de/learning/certs最后一小时已过期
www.example.de/legal/addendum 7 小时前已过期
www.example.es/events 10 小时前已过期
……还有 29 个小时,不是几个月。

服装电商网站

8,474 个网址中的第 6,460 个
产品目录 · 由手工编写的定时任务维护
URL最后扁平化状态
www.example-shop.com/ 3 个月前已过期
…/de-de/products/travel-mat-black 7 个月前已过期
…/de-de/products/trucker-hat-white 7 个月前已过期
…/de-de/products/mat-towel-espresso 7 个月前已过期
…/de-de/products/headband-red 7 个月前已过期
…还有 6,455 个月左右

特定时间点的快照。 随着网站的变化和每小时重新排队的更新,健康缓存的过期计数会在一天中上下波动。

健康的缓存更大,分布在更多域中,并且每天都在变化,但仍然几乎完全是最新的。 它现有的过期页面是按小时计算的,因为 下一次每小时运行会将它们重新排队。 另一个网站上四分之三的页面都是过时的,渲染时间以月为单位计算。 七个月的时间足以让产品目录发生彻底的变化。
04

三种工作流程,两种时钟,无模型

保持缓存新鲜度归结为两项工作,而这两项工作的成本不同。 要找到新增或已更改的页面,需要阅读客户的站点地图,这是最慢的部分。 另一个方法是将平台已标记为过期的内容重新排队,这只需要一次调用。 它们各自按照自己的时间表运行,第三个工作流程会对两者进行报告。

重新排队购买已过期的商品

每小时

一次调用即可将所有 过期 和未缓存的 URL 移至队列中。 它从不与客户的网站联系,因此网站的机器人防护措施无法减慢或阻止它。 这就是为什么这里的旧页面只有几个小时而不是几个月的原因。

扁平化 · 按状态重新渲染

发现新增和已更改的页面

每 6 小时

对于六个本地化域中的每一个,工作流都会读取站点地图,只保留最近 12 小时内更改的页面(间隔的两倍,因此即使延迟运行也不会遗漏任何内容),根据项目自身的范围规则检查每个页面,并注册哪些内容在范围内。 域名同时运行三个。 如果一个域发生故障,其他五个域仍然可以正常运行。

fetch_sitemap › match_scope › jq · urls › add_urls_to_flatten × 6 个域名

报告所有结果,包括失败结果。

无论成功还是失败

该报告并非扫描流程的最后一步,因为最后一步只有在之前的所有步骤都成功的情况下才会运行,而且它会对真正重要的运行情况保持沉默。 这是一个独立的流程,由其他两个流程完成时触发,无论 成功还是失败,它都会发布到团队的 Slack 频道。

jq · compose › slack · post
通过 Nucleus 进行工具调用 盒子上的本地数据步骤
三个工作流程共 27 个步骤,但 没有一个步骤调用模型。 新鲜度有一个正确答案:页面要么是过时的,要么是最新的;要么在范围内,要么不在范围内。 工具每次计算答案的方式都相同。 之所以按小时计费,是因为运行它不需要额外成本。 因为每个步骤都不需要模型或本地系统,所以同样的步骤也可以在云端构建为 Nucleus 工作流。 它在这里通过 Dispatch 运行,并调用相同的 Nucleus 工具。
05

产品中的一个缺口,由田间试验填补。

再仔细看看这些工作流程是做什么的。 “扁平化”功能会将页面标记为过时,但不会重新排队,而且它本身也无法在站点地图中找到新页面。 通常情况下,这类功能请求会先放入待办事项列表中,等待产品团队决定是否有足够的客户需要它。 借助 Nucleus,与客户打交道的人员通过工具和工作流程(而不是产品代码)自行弥合了差距。 此后的每一次运行都产生了证据。

01 · 该领域找出差距

客户的翻译页面过期了,产品中没有任何内容可以使其重新进入队列。

02 天,并非发布用工具装满它

该产品自身的 API 已经作为工具集成到 Nucleus 中。 工作流程会安排它们,产品中不会包含任何这些内容。

03 · 真实客户在生产中试用

它为现在需要的客户运行,每次运行和每一步的结果都会被记录下来。

04 · 产品团队利用数据构建它

确定哪些人需要该功能、该功能应该运行多久一次以及该功能在哪些地方会出错,然后再决定是否开发该功能,或者干脆跳过它。

审判表明,规格说明书不会……
观察发现,每小时重新排队可使 20,000 个 URL 的缓存保持 99.84% 的最新状态。 一个没有类似设施的类似网站的排名为 23.8%。
因此,该功能需要在产品本身中实现过期页面的自动重新排队。 按小时计费通常就足够了,而且几乎不需要任何成本。
观察到一位客户的机器人保护功能直接拒绝站点地图获取,因此发现失败,而重新排队功能仍然有效。
因此,该功能需要将发现和重新排队作为单独的任务。 重新排队绝不应该取决于能否到达客户现场。
观察到某客户的站点地图仅列出了源语言 URL,而其 13 种语言却位于单独的子域中。
因此,该功能需要发现功能,将每个源 URL 映射到每个语言环境主机,而不仅仅是站点地图列出的 URL。
观察到的渲染失败根本没有 HTTP 状态,而且一些被标记为失败的页面在真正的浏览器中可以正常加载。
因此,在任何人对失败页面采取任何行动之前,需要对失败页面进行真正的检查。 状态过滤器永远无法捕获这些错误。
观察到,当运行开始延迟时,发现窗口等于运行间隔,丢失的页面数。
因此,该功能需要一个大约是时间间隔两倍的回溯窗口,而这只有在作业按实际计划运行时才能找到。
这是很容易被忽略的优势。 Nucleus 让最接近客户的人员 能够立即满足特定需求,而无需等待路线图。 拥有 13 个本地化子域名和仅包含源代码的站点地图的客户,只需要增加一个工作流程步骤,而无需产品升级。 与此同时,产品团队获得了待办事项清单永远无法提供的东西:一个经过真实客户评估、已发现其极端情况的有效解决方案。 它可以根据实际需要开发该功能,或者如果发现该功能属于小众领域,则可以将其留在原地。
06

定时任务失败时不会发出任何声音。 这些不是。

cron 任务不会因为缺少计划任务而失败。 它之所以失败,是因为一旦工程师离开,没有人会知道这项工作何时停止进行。 从上面的截图中可以看出,长达七个月前的渲染图显示,没有人被告知此事。

传统布局

服务器上的脚本,编写一次

  • 版权归作者所有,直到他们搬走为止。
  • 如果出现故障,则会记录到日志文件中。
  • 新的语言环境、移动的站点地图或新的机器人防护措施都意味着代码变更。
  • 它直接存储凭证,不以任何人的名义存储。
  • 几个月后,你从过时的统计数据中才发现这一点。
核心 + 调度

任何人都可以阅读和更改的工作流程

  • 每次运行以及每一步的输入和输出都会被保存并查看。
  • 所有结果,包括失败,都会发布到团队频道。
  • 新的语言环境是一个复制步骤,新的日程安排是一个编辑步骤。
  • 每次通话均由 Nucleus 作为指定所有者进行授权和记录。
  • 你会在一小时内通过 Slack 得知结果。
07

搭建新网站不需要工程师。

由于 Flatten 工具位于 Nucleus 中,引擎是 Dispatch,因此添加客户只需进行简短的对话。 入职代理会询问它无法安全猜测的信息,例如项目密钥和站点地图,而不是进行推断。 注册 URL 后,需要等待一位人工审核员对整个批次进行批准,无论该批次包含多少个 URL。

来自笔记本电脑

克劳德

将此网站加入 Flatten,每六小时检查其站点地图,每小时重新排队过期页面,并将结果发布到 #web-ops。
我需要项目密钥和站点地图 URL。 我也不敢妄加猜测。 收到数据后,我会先进行一次导入测试,以便您在批准前检查数量。
通过手机

Dispatch应用程序

需要批准 · 注册 3,198 个 XXXX-XXXX-XXXX-XXXX的 URL

轻点一下即可确认批次。 从这里,您可以复制为下一个客户设置的工作流程,更改计划,或实时跟踪每次运行的步骤。

来自频道

松弛

/flatten-requeue 示例商店
已将 412 个过期 URL 排队等待重新渲染。

斜杠命令启动与计划运行相同的流程,因此任何发现问题的人都可以从频道中修复它。

这就是对比的关键所在。 健康的缓存并不是因为有更优秀的工程师编写了更好的脚本而保持健康的。 它通过 自动化机制保持健康,任何有权限的人都可以设置、读取和更改该机制,它会按计划免费运行,并报告自身的故障。 客户可以获得始终保持最新的翻译页面,这项工作不再需要等待有时间编写和维护代码的人。
区别

电流为 99.84%, 通过配置保持该状态,任何人都可以更改配置。