@@ -15,57 +15,61 @@ addEventListener("fetch", (event) => event.respondWith(handleRequest(event)));
1515async function handleRequest ( event ) {
1616 const originalRequest = event . request ;
1717 const url = new URL ( event . request . url ) ;
18- const path = url . pathname ;
18+ let path = url . pathname ;
1919
2020 const logger = new Logger ( "JavaScriptLog" ) ;
2121
2222 function doLog ( msg ) {
23- console . log ( "[" + path + "]" + msg ) ;
24- logger . log ( "[" + path + "]" + msg ) ;
23+ console . log ( "[" + path + "] " + msg ) ;
24+ logger . log ( "[" + path + "] " + msg ) ;
2525 }
2626
27+ let cacheOverride = new CacheOverride ( "override" , {
28+ swr : '600' , // stale while revalidate
29+ surrogateKey : 'docs' ,
30+ ttl : 21600 ,
31+ } ) ;
32+
2733 // Check if the requested path has a locale slug (e.g., /fr/)
2834 const localeRegex = / \/ ( a f | d e | f r | e s | i d | i t | j a | k o | z h | s v | t r | p l | p t | p t - B R | r u | u k ) \/ /
2935 const hasLocaleSlug = localeRegex . test ( path ) ;
3036
37+ var beresp ;
38+
3139 // If there's a locale slug, try serving the translation
3240 if ( hasLocaleSlug ) {
3341 doLog ( "Attempting to serve localized page for " + path ) ;
34- var response = await staticContentServer . serveRequest ( event . request ) ;
35- if ( response == null || response . status > 400 ) {
36- doLog ( "Failed to serve localized page. Attempting to serve page from Vercel" ) ;
37- // let cacheOverride = new CacheOverride("override", { ttl: 60 });
38- response = await fetch ( event . request , { backend : backendName } ) ;
39- doLog ( "[vercel] " + response . url + "|" + response . status ) ;
40- if ( response != null && response . status < 400 ) {
41- doLog ( "Fetched localized content from Vercel" ) ;
42- return response
42+ beresp = await staticContentServer . serveRequest ( event . request , 'public, max-age=21600, stale-while-revalidate=600' ) ;
43+ if ( beresp == null || beresp . status > 400 ) {
44+ // doLog("Failed to serve localized page. Attempting to serve page from Vercel");
45+ beresp = await fetch ( event . request , { backend : backendName , cacheOverride} ) ;
46+ // doLog("[vercel] " +beresp.url+"|"+beresp.status);
47+ if ( beresp != null && beresp . status < 400 ) {
48+ doLog ( "Localized content fetched from Vercel" ) ;
49+ return beresp
4350 }
4451 }
4552 }
4653
47- doLog ( "begin default route handling" ) ;
4854 // If no translation is found or there's no locale slug, serve the English version
49- const englishPath = path . replace ( localeRegex , '/' ) ;
50- const englishRequest = new Request ( url . origin + englishPath ) ;
51- const englishResponse = await staticContentServer . serveRequest ( englishRequest ) ;
55+ path = hasLocaleSlug ? path . replace ( localeRegex , '/' ) : path ;
56+ const bereq = new Request ( url . origin + path ) ;
57+ beresp = await staticContentServer . serveRequest ( bereq , 'public, max-age=21600, stale-while-revalidate=600' ) ;
5258
53- if ( englishResponse != null && englishResponse . status < 400 ) {
54- doLog ( "fetched content from edge cache" ) ;
55- return englishResponse ;
59+ if ( beresp != null && beresp . status < 400 ) {
60+ doLog ( "Static content fetched from edge cache" ) ;
61+ return beresp ;
5662 }
5763
58- doLog ( "failed to fetch content from edge cache; attempt to serve from vercel" ) ;
5964 // If we **still** can't find the artifact, try to find it on docs.r.o for the user, I guess
6065 // let cacheOverride = new CacheOverride("override", { ttl: 60 });
61- response = await fetch ( originalRequest , { backend : backendName } ) ;
66+ beresp = await fetch ( originalRequest , { backend : backendName , cacheOverride } ) ;
6267
63- if ( response != null && response . status < 400 ) {
64- doLog ( "fetched content from vercel" ) ;
65- return response
68+ if ( beresp != null && beresp . status < 400 ) {
69+ doLog ( "content fetched from vercel (fallback) " ) ;
70+ return beresp
6671 }
6772
68- doLog ( "request failed. return 404" ) ;
6973 // If neither translation nor English version is found, return a 404 response
7074 return new Response ( 'Not found' , { status : 404 } ) ;
7175}
0 commit comments