Fix performances on view loading (#14859)
## Context We are experiencing bad performance on Twenty. One of the root cause hypothesis is that computing `currentUser.currentWorkspace.views` is CPU consuming. Without views, the GetCurrentUser response is ~1000 lines. With its ~10000 lines. As graphql is going through all fields recursively this can be quite heavy on CPU. We had a similar issues on ObjectMetadataItems 2 years ago and came with storing the response in redis. Note: I thought there was also a cache in RAM but this is not the case, so to invalidate the cache we can just empty redis. ## How - Extract getting all views from GetCurrentUser and update frontend to perform both queries - Add views to cached graphql operations - invalidate the cache manually on view or related core entities update / create / delete / destroy ## Tests I have tested a lot on v1
This commit is contained in:
+12
@@ -221,6 +221,18 @@ export class WorkspaceCacheStorageService {
|
||||
);
|
||||
}
|
||||
|
||||
async flushGraphQLOperation({
|
||||
operationName,
|
||||
workspaceId,
|
||||
}: {
|
||||
operationName: string;
|
||||
workspaceId: string;
|
||||
}): Promise<void> {
|
||||
await this.cacheStorageService.flushByPattern(
|
||||
`${WorkspaceCacheKeys.GraphQLOperations}:${operationName}:${workspaceId}:*`,
|
||||
);
|
||||
}
|
||||
|
||||
async flushVersionedMetadata(
|
||||
workspaceId: string,
|
||||
metadataVersion?: number,
|
||||
|
||||
Reference in New Issue
Block a user