mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-25 03:44:29 +03:00
Invalidated post comments cache on like&unlike
refs https://linear.app/tryghost/issue/ENG-676/ We want to make sure that we're not serving stale liked counts for comments, which means we need to cache bust when they're liked/unliked Unfortuantely this means we need to fetch the comment from the db so that we have access to the post id.
This commit is contained in:
parent
58dd79ccb4
commit
001f2b0b91
@ -152,11 +152,20 @@ module.exports = class CommentsController {
|
|||||||
async like(frame) {
|
async like(frame) {
|
||||||
this.#checkMember(frame);
|
this.#checkMember(frame);
|
||||||
|
|
||||||
return await this.service.likeComment(
|
const result = await this.service.likeComment(
|
||||||
frame.options.id,
|
frame.options.id,
|
||||||
frame.options?.context?.member,
|
frame.options?.context?.member,
|
||||||
frame.options
|
frame.options
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const comment = await this.service.getCommentByID(frame.options.id);
|
||||||
|
|
||||||
|
const postId = comment?.get('post_id');
|
||||||
|
if (postId) {
|
||||||
|
frame.setHeader('X-Cache-Invalidate', `/api/members/comments/post/${postId}/`);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -165,11 +174,19 @@ module.exports = class CommentsController {
|
|||||||
async unlike(frame) {
|
async unlike(frame) {
|
||||||
this.#checkMember(frame);
|
this.#checkMember(frame);
|
||||||
|
|
||||||
return await this.service.unlikeComment(
|
const result = await this.service.unlikeComment(
|
||||||
frame.options.id,
|
frame.options.id,
|
||||||
frame.options?.context?.member,
|
frame.options?.context?.member,
|
||||||
frame.options
|
frame.options
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const comment = await this.service.getCommentByID(frame.options.id);
|
||||||
|
|
||||||
|
const postId = comment?.get('post_id');
|
||||||
|
if (postId) {
|
||||||
|
frame.setHeader('X-Cache-Invalidate', `/api/members/comments/post/${postId}/`);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -2027,6 +2027,7 @@ Object {
|
|||||||
"access-control-allow-origin": "*",
|
"access-control-allow-origin": "*",
|
||||||
"cache-control": "no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0",
|
"cache-control": "no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0",
|
||||||
"etag": StringMatching /\\(\\?:W\\\\/\\)\\?"\\(\\?:\\[ !#-\\\\x7E\\\\x80-\\\\xFF\\]\\*\\|\\\\r\\\\n\\[\\\\t \\]\\|\\\\\\\\\\.\\)\\*"/,
|
"etag": StringMatching /\\(\\?:W\\\\/\\)\\?"\\(\\?:\\[ !#-\\\\x7E\\\\x80-\\\\xFF\\]\\*\\|\\\\r\\\\n\\[\\\\t \\]\\|\\\\\\\\\\.\\)\\*"/,
|
||||||
|
"x-cache-invalidate": "/api/members/comments/post/618ba1ffbe2896088840a6df/",
|
||||||
"x-powered-by": "Express",
|
"x-powered-by": "Express",
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
@ -2094,6 +2095,7 @@ Object {
|
|||||||
"access-control-allow-origin": "*",
|
"access-control-allow-origin": "*",
|
||||||
"cache-control": "no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0",
|
"cache-control": "no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0",
|
||||||
"etag": StringMatching /\\(\\?:W\\\\/\\)\\?"\\(\\?:\\[ !#-\\\\x7E\\\\x80-\\\\xFF\\]\\*\\|\\\\r\\\\n\\[\\\\t \\]\\|\\\\\\\\\\.\\)\\*"/,
|
"etag": StringMatching /\\(\\?:W\\\\/\\)\\?"\\(\\?:\\[ !#-\\\\x7E\\\\x80-\\\\xFF\\]\\*\\|\\\\r\\\\n\\[\\\\t \\]\\|\\\\\\\\\\.\\)\\*"/,
|
||||||
|
"x-cache-invalidate": "/api/members/comments/post/618ba1ffbe2896088840a6df/",
|
||||||
"x-powered-by": "Express",
|
"x-powered-by": "Express",
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
@ -2260,6 +2262,7 @@ Object {
|
|||||||
"access-control-allow-origin": "*",
|
"access-control-allow-origin": "*",
|
||||||
"cache-control": "no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0",
|
"cache-control": "no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0",
|
||||||
"etag": StringMatching /\\(\\?:W\\\\/\\)\\?"\\(\\?:\\[ !#-\\\\x7E\\\\x80-\\\\xFF\\]\\*\\|\\\\r\\\\n\\[\\\\t \\]\\|\\\\\\\\\\.\\)\\*"/,
|
"etag": StringMatching /\\(\\?:W\\\\/\\)\\?"\\(\\?:\\[ !#-\\\\x7E\\\\x80-\\\\xFF\\]\\*\\|\\\\r\\\\n\\[\\\\t \\]\\|\\\\\\\\\\.\\)\\*"/,
|
||||||
|
"x-cache-invalidate": "/api/members/comments/post/618ba1ffbe2896088840a6df/",
|
||||||
"x-powered-by": "Express",
|
"x-powered-by": "Express",
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
Loading…
Reference in New Issue
Block a user