1
mirror of https://github.com/jakejarvis/jarv.is.git synced 2025-04-26 18:48:28 -04:00

update function cache headers

This commit is contained in:
Jake Jarvis 2022-01-03 11:52:32 -05:00
parent 55d9207753
commit aa40d3384c
Signed by: jake
GPG Key ID: 2B0C9CF251E69A39
7 changed files with 16 additions and 29 deletions

View File

@ -19,12 +19,8 @@ const AIRTABLE_API_ENDPOINT = "https://api.airtable.com/v0/";
const handler = async (req: NextApiRequest, res: NextApiResponse) => { const handler = async (req: NextApiRequest, res: NextApiResponse) => {
try { try {
// permissive access control headers
res.setHeader("Access-Control-Allow-Methods", "POST");
res.setHeader("Access-Control-Allow-Origin", "*");
// disable caching on both ends // disable caching on both ends
res.setHeader("Cache-Control", "private, no-cache, no-store, must-revalidate"); res.setHeader("Cache-Control", "private, no-cache, no-store, must-revalidate");
res.setHeader("Expires", 0);
res.setHeader("Pragma", "no-cache"); res.setHeader("Pragma", "no-cache");
if (req.method !== "POST") { if (req.method !== "POST") {

View File

@ -14,10 +14,6 @@ Sentry.init({
const handler = async (req: NextApiRequest, res: NextApiResponse) => { const handler = async (req: NextApiRequest, res: NextApiResponse) => {
try { try {
// permissive access control headers
res.setHeader("Access-Control-Allow-Methods", "GET");
res.setHeader("Access-Control-Allow-Origin", "*");
if (req.method !== "GET") { if (req.method !== "GET") {
return res.status(405).send(""); // 405 Method Not Allowed return res.status(405).send(""); // 405 Method Not Allowed
} }
@ -33,8 +29,8 @@ const handler = async (req: NextApiRequest, res: NextApiResponse) => {
// return overall site stats if slug not specified // return overall site stats if slug not specified
result = await getSiteStats(client); result = await getSiteStats(client);
// let Vercel edge and browser cache results for 15 mins // let Vercel edge cache results for 15 mins
res.setHeader("Cache-Control", "public, max-age=900, s-maxage=900, stale-while-revalidate"); res.setHeader("Cache-Control", "s-maxage=900, stale-while-revalidate");
} else { } else {
// increment this page's hits. retry 3 times in case of Fauna "contended transaction" error: // increment this page's hits. retry 3 times in case of Fauna "contended transaction" error:
// https://sentry.io/share/issue/9c60a58211954ed7a8dfbe289bd107b5/ // https://sentry.io/share/issue/9c60a58211954ed7a8dfbe289bd107b5/
@ -47,7 +43,6 @@ const handler = async (req: NextApiRequest, res: NextApiResponse) => {
// disable caching on both ends // disable caching on both ends
res.setHeader("Cache-Control", "private, no-cache, no-store, must-revalidate"); res.setHeader("Cache-Control", "private, no-cache, no-store, must-revalidate");
res.setHeader("Expires", 0);
res.setHeader("Pragma", "no-cache"); res.setHeader("Pragma", "no-cache");
} }

View File

@ -9,10 +9,6 @@ Sentry.init({
const handler = async (req: NextApiRequest, res: NextApiResponse) => { const handler = async (req: NextApiRequest, res: NextApiResponse) => {
try { try {
// permissive access control headers
res.setHeader("Access-Control-Allow-Methods", "GET");
res.setHeader("Access-Control-Allow-Origin", "*");
if (req.method !== "GET") { if (req.method !== "GET") {
return res.status(405).send(""); // 405 Method Not Allowed return res.status(405).send(""); // 405 Method Not Allowed
} }
@ -25,8 +21,8 @@ const handler = async (req: NextApiRequest, res: NextApiResponse) => {
const result = await fetchRepos(req.query.sort === "top" ? "STARGAZERS" : "PUSHED_AT", limit); const result = await fetchRepos(req.query.sort === "top" ? "STARGAZERS" : "PUSHED_AT", limit);
// let Vercel edge and browser cache results for 15 mins // let Vercel edge cache results for 15 mins
res.setHeader("Cache-Control", "public, max-age=900, s-maxage=900, stale-while-revalidate"); res.setHeader("Cache-Control", "s-maxage=900, stale-while-revalidate");
return res.status(200).json(result); return res.status(200).json(result);
} catch (error) { } catch (error) {

View File

@ -26,10 +26,6 @@ const TOP_TRACKS_ENDPOINT = "https://api.spotify.com/v1/me/top/tracks?time_range
const handler = async (req: NextApiRequest, res: NextApiResponse) => { const handler = async (req: NextApiRequest, res: NextApiResponse) => {
try { try {
// permissive access control headers
res.setHeader("Access-Control-Allow-Methods", "GET");
res.setHeader("Access-Control-Allow-Origin", "*");
if (req.method !== "GET") { if (req.method !== "GET") {
return res.status(405).send(""); // 405 Method Not Allowed return res.status(405).send(""); // 405 Method Not Allowed
} }
@ -41,13 +37,13 @@ const handler = async (req: NextApiRequest, res: NextApiResponse) => {
if (typeof req.query.now !== "undefined") { if (typeof req.query.now !== "undefined") {
response = await getNowPlaying(); response = await getNowPlaying();
// let Vercel edge and browser cache results for 5 mins // let Vercel edge cache results for 5 mins
res.setHeader("Cache-Control", "public, max-age=300, s-maxage=300, stale-while-revalidate"); res.setHeader("Cache-Control", "s-maxage=300, stale-while-revalidate");
} else { } else {
response = await getTopTracks(); response = await getTopTracks();
// let Vercel edge and browser cache results for 3 hours // let Vercel edge cache results for 3 hours
res.setHeader("Cache-Control", "public, max-age=10800, s-maxage=10800, stale-while-revalidate"); res.setHeader("Cache-Control", "s-maxage=10800, stale-while-revalidate");
} }
return res.status(200).json(response); return res.status(200).json(response);

View File

@ -7,7 +7,9 @@ export const getServerSideProps: GetServerSideProps = async (context) => {
const feed = buildFeed(); const feed = buildFeed();
const { res } = context; const { res } = context;
res.setHeader("content-type", "application/atom+xml"); res.setHeader("content-type", "application/atom+xml; charset=utf-8");
// cache on edge for one hour
res.setHeader("cache-control", "s-maxage=3600, stale-while-revalidate");
res.write(feed.atom1()); res.write(feed.atom1());
res.end(); res.end();

View File

@ -7,7 +7,9 @@ export const getServerSideProps: GetServerSideProps = async (context) => {
const feed = buildFeed(); const feed = buildFeed();
const { res } = context; const { res } = context;
res.setHeader("content-type", "application/rss+xml"); res.setHeader("content-type", "application/rss+xml; charset=utf-8");
// cache on edge for one hour
res.setHeader("cache-control", "s-maxage=3600, stale-while-revalidate");
res.write(feed.rss2()); res.write(feed.rss2());
res.end(); res.end();

View File

@ -21,8 +21,8 @@ export const getServerSideProps: GetServerSideProps = async (context) => {
const { res } = context; const { res } = context;
// https://developer.mozilla.org/en-US/docs/Web/Manifest#deploying_a_manifest // https://developer.mozilla.org/en-US/docs/Web/Manifest#deploying_a_manifest
res.setHeader("content-type", "application/manifest+json"); res.setHeader("content-type", "application/manifest+json; charset=utf-8");
// cache for one day // cache on edge for one day
res.setHeader("cache-control", "s-maxage=86400, stale-while-revalidate"); res.setHeader("cache-control", "s-maxage=86400, stale-while-revalidate");
res.write(JSON.stringify(manifest)); res.write(JSON.stringify(manifest));
res.end(); res.end();