Merged in fix/SW-2945-cache-timings-for-resolve-entry (pull request #2264)
Fix/SW-2945 cache timings for resolve entry * fix: cache resolveentry() harder and revalidate on publish instead * logging: use debug logging for requests and add logging when tll is invalid Approved-by: Linus Flood
This commit is contained in:
@@ -16,7 +16,7 @@ export const cacheRoutes = new Elysia({ prefix: "/cache" })
|
|||||||
"/",
|
"/",
|
||||||
async ({ query: { key }, status }) => {
|
async ({ query: { key }, status }) => {
|
||||||
key = validateKey(key);
|
key = validateKey(key);
|
||||||
cacheRouteLogger.info(`GET /cache ${key}`);
|
cacheRouteLogger.debug(`GET /cache ${key}`);
|
||||||
|
|
||||||
const value = await redis.get(key);
|
const value = await redis.get(key);
|
||||||
if (!value) {
|
if (!value) {
|
||||||
@@ -48,9 +48,12 @@ export const cacheRoutes = new Elysia({ prefix: "/cache" })
|
|||||||
"/",
|
"/",
|
||||||
async ({ query: { key }, body, status, set }) => {
|
async ({ query: { key }, body, status, set }) => {
|
||||||
key = validateKey(key);
|
key = validateKey(key);
|
||||||
cacheRouteLogger.info(`PUT /cache ${key}`);
|
cacheRouteLogger.debug(`PUT /cache ${key}`);
|
||||||
|
|
||||||
if (!body.ttl || body.ttl < 0) {
|
if (!body.ttl || body.ttl < 0) {
|
||||||
|
cacheRouteLogger.warn(
|
||||||
|
`PUT /cache ${key} with ttl=${body.ttl}, will not cache the data`
|
||||||
|
);
|
||||||
return status("Bad Request", "ttl is required");
|
return status("Bad Request", "ttl is required");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -69,7 +72,7 @@ export const cacheRoutes = new Elysia({ prefix: "/cache" })
|
|||||||
"/",
|
"/",
|
||||||
async ({ query: { key, fuzzy } }) => {
|
async ({ query: { key, fuzzy } }) => {
|
||||||
key = validateKey(key);
|
key = validateKey(key);
|
||||||
cacheRouteLogger.info(
|
cacheRouteLogger.debug(
|
||||||
`DELETE /cache ${key} ${fuzzy ? "fuzzy" : ""}`
|
`DELETE /cache ${key} ${fuzzy ? "fuzzy" : ""}`
|
||||||
);
|
);
|
||||||
const deletedKeys: number = fuzzy
|
const deletedKeys: number = fuzzy
|
||||||
|
|||||||
@@ -119,6 +119,11 @@ export async function POST(request: NextRequest) {
|
|||||||
revalidateTag(contentEntryTag)
|
revalidateTag(contentEntryTag)
|
||||||
await cacheClient.deleteKey(contentEntryTag, { fuzzy: true })
|
await cacheClient.deleteKey(contentEntryTag, { fuzzy: true })
|
||||||
|
|
||||||
|
if (entry.url) {
|
||||||
|
console.info(`Revalidating url: ${entry.url}`)
|
||||||
|
await cacheClient.deleteKey(entry.url, { fuzzy: true })
|
||||||
|
}
|
||||||
|
|
||||||
if (entry.breadcrumbs) {
|
if (entry.breadcrumbs) {
|
||||||
const breadcrumbsRefsTag = generateRefsResponseTag(
|
const breadcrumbsRefsTag = generateRefsResponseTag(
|
||||||
entryLocale,
|
entryLocale,
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ services:
|
|||||||
- PRIMARY_API_KEY=
|
- PRIMARY_API_KEY=
|
||||||
- SECONDARY_API_KEY=
|
- SECONDARY_API_KEY=
|
||||||
- NODE_ENV=development
|
- NODE_ENV=development
|
||||||
|
- SENTRY_ENABLED=false
|
||||||
- SENTRY_DSN=fake-dsn
|
- SENTRY_DSN=fake-dsn
|
||||||
- SENTRY_ENVIRONMENT=development
|
- SENTRY_ENVIRONMENT=development
|
||||||
redis:
|
redis:
|
||||||
|
|||||||
@@ -10,18 +10,14 @@ export const fetchAndCacheEntry = async (path: string, lang: Lang) => {
|
|||||||
|
|
||||||
return cache.cacheOrGet(
|
return cache.cacheOrGet(
|
||||||
cacheKey,
|
cacheKey,
|
||||||
async (overrideTTL) => {
|
async () => {
|
||||||
const { contentType, uid } = await resolveEntry(path, lang)
|
const { contentType, uid } = await resolveEntry(path, lang)
|
||||||
|
|
||||||
if (!contentType || !uid) {
|
|
||||||
overrideTTL?.("10m")
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
contentType,
|
contentType,
|
||||||
uid,
|
uid,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"1d"
|
"max"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user