From cb7af51e7367e57af5c555b49ceda8a92a490c72 Mon Sep 17 00:00:00 2001 From: Himanshu Mishra Date: Wed, 13 Jan 2021 21:08:03 +0100 Subject: [PATCH] techdocs: cache docs site when built using urlReader for 30 minutes This caching makes it usable experience, so that docs are not built on every load. In future readTree will support a method to fetch the timestamp of the latest HEAD. And it should be used to invalidate the cache. --- .changeset/techdocs-rotten-crabs-ring.md | 5 +++++ plugins/techdocs-backend/src/DocsBuilder/builder.ts | 12 ++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 .changeset/techdocs-rotten-crabs-ring.md diff --git a/.changeset/techdocs-rotten-crabs-ring.md b/.changeset/techdocs-rotten-crabs-ring.md new file mode 100644 index 0000000000..7eddd8ba6c --- /dev/null +++ b/.changeset/techdocs-rotten-crabs-ring.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs-backend': patch +--- + +If using Url Reader, cache downloaded source files for 30 minutes. diff --git a/plugins/techdocs-backend/src/DocsBuilder/builder.ts b/plugins/techdocs-backend/src/DocsBuilder/builder.ts index 3d40f0a870..33d3120c47 100644 --- a/plugins/techdocs-backend/src/DocsBuilder/builder.ts +++ b/plugins/techdocs-backend/src/DocsBuilder/builder.ts @@ -144,6 +144,18 @@ export class DocsBuilder { } } + // Cache downloaded source files for 30 minutes. + // TODO: When urlReader/readTree supports some way to get latest commit timestamp, + // it should be used to invalidate cache. + if (type === 'url') { + const builtAt = buildMetadataStorage.getTimestamp(); + const now = Date.now(); + + if (builtAt > now - 1800000) { + return true; + } + } + this.logger.debug( `Docs for entity ${getEntityId(this.entity)} was outdated.`, );