Cache « in-server » requests

Hey folks! I have a SvelteKit app deployed through Pages (so my server endpoints are counted as Workers from a CF perspective). In my page server load function (+page.server.ts) I have this:
// +page.server.ts

async function fetchRecentStuff(event: ServerLoadEvent){
const url = '/api/stuff/recents'; // Also tried with absolute url: https://example.com/api/stuff/recents
const response = await event.fetch(url);
const recentStuff = await response.json();
return recentStuff;
}

export const load: PageServerLoad = async (event) => {
const stuff = await getStuff(event);
return { stuff }
};
// +page.server.ts

async function fetchRecentStuff(event: ServerLoadEvent){
const url = '/api/stuff/recents'; // Also tried with absolute url: https://example.com/api/stuff/recents
const response = await event.fetch(url);
const recentStuff = await response.json();
return recentStuff;
}

export const load: PageServerLoad = async (event) => {
const stuff = await getStuff(event);
return { stuff }
};
And in the called endpoint:
// /routes/api/stuff/recents/+server.ts

async function getRecentStuff() {...}
async function getUserProfile(event) {...}

export const GET: RequestHandler = async (event) => {
const mongoUser = await app.logIn(credentials);
const mongoClient = mongoUser.mongoClient('mongodb');

const userProfile = await getUserProfile(event)
const recentStuff = await getRecentStuff(mongoClient, userProfile);

return json(recentStuff);
};
// /routes/api/stuff/recents/+server.ts

async function getRecentStuff() {...}
async function getUserProfile(event) {...}

export const GET: RequestHandler = async (event) => {
const mongoUser = await app.logIn(credentials);
const mongoClient = mongoUser.mongoClient('mongodb');

const userProfile = await getUserProfile(event)
const recentStuff = await getRecentStuff(mongoClient, userProfile);

return json(recentStuff);
};
My goal is to cache that request to /api/stuff/recents at the edge level, so I setup the attached rule. My problem is it actually doesn't cache the request response. Maybe you have an hint? 🙂
No description
1 Reply
Hugo
Hugo2mo ago
Yeah I ended up doing that ! As I make a call server-to-server from the same domaine it’s not proxied. Any thoughts on service binding for Sveltekit (or other framework that leverages workers for their Functions)? I’d love to call example.com/api from example.com server environment AND seeing this sub request proxied to benefit from all CF features
Want results from more Discord servers?
Add your server