Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,5 @@ src/routeTree.gen.ts

# Generated native desktop helper
/desktop/native/folder-access

.staging/
55 changes: 55 additions & 0 deletions docs/docs-html-cache-experiment.ts.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
// Archived proof of concept. Not imported by the application.

export async function serveDocsHtml(
request: Request,
options: {
cache: Pick<Cache, 'match' | 'put'> | undefined
render: () => Response | Promise<Response>
waitUntil: (task: Promise<unknown>) => void
},
) {
const eligible = isPublicDocsHtmlRequest(request)
// A separate key prevents collisions with negotiated Markdown responses.
const key = new URL(request.url)
key.searchParams.set('__docs_html_cache', 'v1')
if (eligible && options.cache) {
const hit = await options.cache.match(key.href).catch((error) => {
console.warn('[Docs HTML cache] Read failed', error)
return undefined
})
if (hit) {
const headers = new Headers(hit.headers)
headers.set('X-Docs-Cache', 'HIT')
const [, libraryId, version] = new URL(request.url).pathname.split('/')
headers.set(
'Cache-Control',
getDocsCacheHeaders({ libraryId, version })['Cache-Control'],
)
return new Response(hit.body, { status: hit.status, headers })
}
}
const response = finalizeDocsHtmlHeaders(request, await options.render())
if (
eligible &&
options.cache &&
response.status === 200 &&
response.headers.get('content-type')?.includes('text/html') &&
response.headers.get('cache-tag')?.split(',').includes('docs:all') &&
!response.headers.has('set-cookie') &&
!/no-store|private/i.test(response.headers.get('cache-control') ?? '')
) {
// Cache API uses Cache-Control, not the CDN header. Keep this spike's
// HTML TTL at 60 seconds; content refreshes independently in waitUntil.
const headers = new Headers(response.headers)
headers.set('Cache-Control', 'public, max-age=60')
options.waitUntil(
options.cache
.put(key.href, new Response(response.clone().body, { headers }))
.catch((error) => {
console.warn('[Docs HTML cache] Write failed', error)
}),
)
response.headers.set('X-Docs-Cache', 'MISS')
}
return response
}
194 changes: 194 additions & 0 deletions docs/docs-performance-measurements.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,194 @@
[
{
"request": 1,
"status": 200,
"ttfb_ms": 1779.9,
"total_ms": 1900.0,
"tls_ms": 128.1,
"server_timing": "app_headers;dur=256.0, db_config;dur=0.0, content_edge_read;dur=504.0, start_handler;dur=256.0, db_used;desc=\"false\", docs_request;desc=\"1\"",
"cache_control": "private, no-store",
"ray": "a4b03dcc0e46f0aa",
"instance": "d91be598-ef5a-4d60-965f-2579acc5d50a",
"docs_request": 1,
"wall_ms": 424,
"cpu_ms": 166,
"clock_ms": 256,
"db_used": false
},
{
"request": 2,
"status": 200,
"ttfb_ms": 1713.9,
"total_ms": 1831.7,
"tls_ms": 85.0,
"server_timing": "app_headers;dur=243.0, db_config;dur=0.0, content_edge_read;dur=480.0, start_handler;dur=243.0, db_used;desc=\"false\", docs_request;desc=\"1\"",
"cache_control": "private, no-store",
"ray": "a4b03dd7cda61e3c",
"instance": "041c4fde-fa09-4ade-a9cd-17386142d366",
"docs_request": 1,
"wall_ms": 411,
"cpu_ms": 163,
"clock_ms": 243,
"db_used": false
},
{
"request": 3,
"status": 200,
"ttfb_ms": 286.8,
"total_ms": 412.8,
"tls_ms": 84.0,
"server_timing": "app_headers;dur=19.0, db_config;dur=0.0, content_edge_read;dur=25.0, start_handler;dur=19.0, db_used;desc=\"false\", docs_request;desc=\"2\"",
"cache_control": "private, no-store",
"ray": "a4b03de3583bf0ba",
"instance": "d91be598-ef5a-4d60-965f-2579acc5d50a",
"docs_request": 2,
"wall_ms": 99,
"cpu_ms": 63,
"clock_ms": 19,
"db_used": false
},
{
"request": 4,
"status": 200,
"ttfb_ms": 3243.7,
"total_ms": 3361.7,
"tls_ms": 122.5,
"server_timing": "app_headers;dur=507.0, db_config;dur=0.0, content_edge_read;dur=1004.0, start_handler;dur=507.0, db_used;desc=\"false\", docs_request;desc=\"1\"",
"cache_control": "private, no-store",
"ray": "a4b03de63a396b3f",
"instance": "c995ad13-f3e8-47dc-80a3-7e53db2cc399",
"docs_request": 1,
"wall_ms": 955,
"cpu_ms": 443,
"clock_ms": 507,
"db_used": false
},
{
"request": 5,
"status": 200,
"ttfb_ms": 3008.6,
"total_ms": 3133.4,
"tls_ms": 80.2,
"server_timing": "app_headers;dur=408.0, db_config;dur=0.0, content_edge_read;dur=806.0, start_handler;dur=408.0, db_used;desc=\"false\", docs_request;desc=\"1\"",
"cache_control": "private, no-store",
"ray": "a4b03dfb0ad62e5a",
"instance": "df765ba1-16b1-46c9-a22a-522a4ca6fa6c",
"docs_request": 1,
"wall_ms": 872,
"cpu_ms": 469,
"clock_ms": 408,
"db_used": false
},
{
"request": 6,
"status": 200,
"ttfb_ms": 1747.5,
"total_ms": 1866.6,
"tls_ms": 80.8,
"server_timing": "app_headers;dur=248.0, db_config;dur=0.0, content_edge_read;dur=489.0, start_handler;dur=248.0, db_used;desc=\"false\", docs_request;desc=\"1\"",
"cache_control": "private, no-store",
"ray": "a4b03e0ebffd21d2",
"instance": "a965714b-3f6f-47bf-b76f-b9eda86c923c",
"docs_request": 1,
"wall_ms": 422,
"cpu_ms": 167,
"clock_ms": 248,
"db_used": false
},
{
"request": 1,
"status": 200,
"ttfb_ms": 2192.4,
"total_ms": 2314.2,
"tls_ms": 80.1,
"server_timing": "app_headers;dur=489.0, db_config;dur=0.0, content_edge_read;dur=970.0, start_handler;dur=489.0, db_used;desc=\"false\", docs_request;desc=\"1\"",
"cache_control": "private, no-store",
"ray": "a4b03e97be5ffe48",
"instance": "34c797bd-a9ad-4270-a8c8-56f1611201b3",
"docs_request": 1,
"wall_ms": 683,
"cpu_ms": 192,
"clock_ms": 489,
"db_used": false
},
{
"request": 2,
"status": 200,
"ttfb_ms": 1991.8,
"total_ms": 2109.0,
"tls_ms": 80.6,
"server_timing": "app_headers;dur=305.0, db_config;dur=0.0, content_edge_read;dur=603.0, start_handler;dur=305.0, db_used;desc=\"false\", docs_request;desc=\"1\"",
"cache_control": "private, no-store",
"ray": "a4b03ea65b2969fb",
"instance": "8d523fd5-9787-4cc8-810a-6e41e9bf1373",
"docs_request": 1,
"wall_ms": 486,
"cpu_ms": 177,
"clock_ms": 305,
"db_used": false
},
{
"request": 3,
"status": 200,
"ttfb_ms": 274.7,
"total_ms": 391.4,
"tls_ms": 84.2,
"server_timing": "app_headers;dur=13.0, db_config;dur=0.0, content_edge_read;dur=19.0, start_handler;dur=13.0, db_used;desc=\"false\", docs_request;desc=\"2\"",
"cache_control": "private, no-store",
"ray": "a4b03eb3a8863cd3",
"instance": "34c797bd-a9ad-4270-a8c8-56f1611201b3",
"docs_request": 2,
"wall_ms": 92,
"cpu_ms": 64,
"clock_ms": 13,
"db_used": false
},
{
"request": 4,
"status": 200,
"ttfb_ms": 242.1,
"total_ms": 363.0,
"tls_ms": 81.4,
"server_timing": "app_headers;dur=16.0, db_config;dur=0.0, content_edge_read;dur=23.0, start_handler;dur=16.0, db_used;desc=\"false\", docs_request;desc=\"3\"",
"cache_control": "private, no-store",
"ray": "a4b03eb62ad5f0b0",
"instance": "d91be598-ef5a-4d60-965f-2579acc5d50a",
"docs_request": 3,
"wall_ms": 79,
"cpu_ms": 51,
"clock_ms": 16,
"db_used": false
},
{
"request": 5,
"status": 200,
"ttfb_ms": 248.4,
"total_ms": 363.3,
"tls_ms": 81.7,
"server_timing": "app_headers;dur=12.0, db_config;dur=0.0, content_edge_read;dur=19.0, start_handler;dur=12.0, db_used;desc=\"false\", docs_request;desc=\"2\"",
"cache_control": "private, no-store",
"ray": "a4b03eb8898adaec",
"instance": "a965714b-3f6f-47bf-b76f-b9eda86c923c",
"docs_request": 2,
"wall_ms": 93,
"cpu_ms": 60,
"clock_ms": 12,
"db_used": false
},
{
"request": 6,
"status": 200,
"ttfb_ms": 272.6,
"total_ms": 388.5,
"tls_ms": 94.6,
"server_timing": "app_headers;dur=11.0, db_config;dur=0.0, content_edge_read;dur=16.0, start_handler;dur=11.0, db_used;desc=\"false\", docs_request;desc=\"3\"",
"cache_control": "private, no-store",
"ray": "a4b03ebafaab3127",
"instance": "34c797bd-a9ad-4270-a8c8-56f1611201b3",
"docs_request": 3,
"wall_ms": 108,
"cpu_ms": 88,
"clock_ms": 11,
"db_used": false
}
]
Loading
Loading