diff --git a/src/run/handlers/server.ts b/src/run/handlers/server.ts index 436411c812..55960b272b 100644 --- a/src/run/handlers/server.ts +++ b/src/run/handlers/server.ts @@ -108,7 +108,7 @@ export default async (request: Request) => { await adjustDateHeader({ headers: response.headers, request, span, tracer, requestContext }) - setCacheControlHeaders(response, request, requestContext) + setCacheControlHeaders(response, request, requestContext, nextConfig) setCacheTagsHeaders(response.headers, requestContext) setVaryHeaders(response.headers, request, nextConfig) setCacheStatusHeader(response.headers) diff --git a/src/run/headers.ts b/src/run/headers.ts index e1ad53e37d..8ee7f7b7f4 100644 --- a/src/run/headers.ts +++ b/src/run/headers.ts @@ -3,7 +3,7 @@ import type { NextConfigComplete } from 'next/dist/server/config-shared.js' import { encodeBlobKey } from '../shared/blobkey.js' -import type { RequestContext } from './handlers/request-context.cjs' +import { getLogger, RequestContext } from './handlers/request-context.cjs' import type { RuntimeTracer } from './handlers/tracer.cjs' import { getRegionalBlobStore } from './regional-blob-store.cjs' @@ -216,6 +216,7 @@ export const setCacheControlHeaders = ( { headers, status }: Response, request: Request, requestContext: RequestContext, + nextConfig: NextConfigComplete, ) => { if ( typeof requestContext.routeHandlerRevalidate !== 'undefined' && @@ -234,6 +235,13 @@ export const setCacheControlHeaders = ( return } + // temporary diagnostic to evaluate number of trailing slash redirects + if (status === 308 && request.url.endsWith('/') !== nextConfig.trailingSlash) { + getLogger() + .withFields({ trailingSlash: nextConfig.trailingSlash }) + .log('NetlifyHeadersHandler.trailingSlashRedirect') + } + if (status === 404 && request.url.endsWith('.php')) { // temporary CDN Cache Control handling for bot probes on PHP files // https://linear.app/netlify/issue/FRB-1344/prevent-excessive-ssr-invocations-due-to-404-routes