diff --git a/.changeset/nervous-rivers-destroy.md b/.changeset/nervous-rivers-destroy.md new file mode 100644 index 0000000000..c5188363a7 --- /dev/null +++ b/.changeset/nervous-rivers-destroy.md @@ -0,0 +1,5 @@ +--- +"gitbook": patch +--- + +Fix embed script and assets being cached for too long diff --git a/packages/gitbook/src/app/sites/static/[mode]/[siteURL]/[siteData]/~gitbook/embed/assistant-demo/route.ts b/packages/gitbook/src/app/sites/static/[mode]/[siteURL]/[siteData]/~gitbook/embed/demo/route.ts similarity index 100% rename from packages/gitbook/src/app/sites/static/[mode]/[siteURL]/[siteData]/~gitbook/embed/assistant-demo/route.ts rename to packages/gitbook/src/app/sites/static/[mode]/[siteURL]/[siteData]/~gitbook/embed/demo/route.ts diff --git a/packages/gitbook/src/app/sites/static/[mode]/[siteURL]/[siteData]/~gitbook/embed/script.js/route.ts b/packages/gitbook/src/app/sites/static/[mode]/[siteURL]/[siteData]/~gitbook/embed/script.js/route.ts index ede1c1b9e6..be51d24e10 100644 --- a/packages/gitbook/src/app/sites/static/[mode]/[siteURL]/[siteData]/~gitbook/embed/script.js/route.ts +++ b/packages/gitbook/src/app/sites/static/[mode]/[siteURL]/[siteData]/~gitbook/embed/script.js/route.ts @@ -1,5 +1,6 @@ import type { RouteLayoutParams } from '@/app/utils'; import { getAssetURL } from '@/lib/assets'; +import { buildVersion } from '@/lib/build'; import { getEmbeddableStaticContext } from '@/lib/embeddable'; import type { CreateGitBookOptions } from '@gitbook/embed'; import type { NextRequest } from 'next/server'; @@ -14,7 +15,6 @@ export async function GET( { params }: { params: Promise } ) { const { context } = await getEmbeddableStaticContext(await params); - const maxAge = 7 * 24 * 60 * 60; const initOptions: CreateGitBookOptions = { siteURL: context.linker.toAbsoluteURL(context.linker.toPathInSite('')), }; @@ -45,13 +45,13 @@ export async function GET( const load = function () { const style = document.createElement('link'); style.rel = 'stylesheet'; - style.href = ${JSON.stringify(getAssetURL('embed/index.css'))}; + style.href = ${JSON.stringify(getAssetURL(`embed/index.css?v=${buildVersion()}`))}; document.head.appendChild(style); const script = d.createElement('script'); script.type = 'text/javascript'; script.async = true; - script.src = ${JSON.stringify(getAssetURL('embed/index.js'))}; + script.src = ${JSON.stringify(getAssetURL(`embed/index.js?v=${buildVersion()}`))}; var latestScript = d.getElementsByTagName('script')[0]; latestScript.parentNode.insertBefore(script, latestScript); @@ -70,7 +70,7 @@ export async function GET( { headers: { 'Content-Type': 'application/javascript', - 'Cache-Control': `public, max-age=${maxAge}, immutable`, + 'Cache-Control': 'public, max-age=86400, stale-while-revalidate=604800', }, } ); diff --git a/packages/gitbook/src/middleware.ts b/packages/gitbook/src/middleware.ts index 68adeb813d..6c0acebbb7 100644 --- a/packages/gitbook/src/middleware.ts +++ b/packages/gitbook/src/middleware.ts @@ -552,7 +552,7 @@ function encodePathInSiteContent(rawPathname: string): { case 'sitemap-pages.xml': case 'robots.txt': case '~gitbook/embed/script.js': - case '~gitbook/embed/assistant-demo': + case '~gitbook/embed/demo': // LLMs.txt, sitemap, sitemap-pages and robots.txt are always static // as they only depend on the site structure / pages. return { pathname, routeType: 'static' };