ABC-228 Update GetPosts caching to work for non-60 limits (#8233)
* Update GetPosts caching to work for non-60 limits * Only cache on limits of 30/60 and add test * Add comments clarifying 30 and 60 limits
Этот коммит содержится в:
коммит произвёл
Christopher Speller
родитель
0daac7e4fc
Коммит
3e0c3eff9f
@@ -322,7 +322,10 @@ type etagPosts struct {
|
||||
|
||||
func (s SqlPostStore) InvalidateLastPostTimeCache(channelId string) {
|
||||
lastPostTimeCache.Remove(channelId)
|
||||
lastPostsCache.Remove(channelId)
|
||||
|
||||
// Keys are "{channelid}{limit}" and caching only occurs on limits of 30 and 60
|
||||
lastPostsCache.Remove(channelId + "30")
|
||||
lastPostsCache.Remove(channelId + "60")
|
||||
}
|
||||
|
||||
func (s SqlPostStore) GetEtag(channelId string, allowFromCache bool) store.StoreChannel {
|
||||
@@ -439,8 +442,9 @@ func (s SqlPostStore) GetPosts(channelId string, offset int, limit int, allowFro
|
||||
return
|
||||
}
|
||||
|
||||
if allowFromCache && offset == 0 && limit == 60 {
|
||||
if cacheItem, ok := lastPostsCache.Get(channelId); ok {
|
||||
// Caching only occurs on limits of 30 and 60, the common limits requested by MM clients
|
||||
if allowFromCache && offset == 0 && (limit == 60 || limit == 30) {
|
||||
if cacheItem, ok := lastPostsCache.Get(fmt.Sprintf("%s%v", channelId, limit)); ok {
|
||||
if s.metrics != nil {
|
||||
s.metrics.IncrementMemCacheHitCounter("Last Posts Cache")
|
||||
}
|
||||
@@ -482,8 +486,9 @@ func (s SqlPostStore) GetPosts(channelId string, offset int, limit int, allowFro
|
||||
|
||||
list.MakeNonNil()
|
||||
|
||||
if offset == 0 && limit == 60 {
|
||||
lastPostsCache.AddWithExpiresInSecs(channelId, list, LAST_POSTS_CACHE_SEC)
|
||||
// Caching only occurs on limits of 30 and 60, the common limits requested by MM clients
|
||||
if offset == 0 && (limit == 60 || limit == 30) {
|
||||
lastPostsCache.AddWithExpiresInSecs(fmt.Sprintf("%s%v", channelId, limit), list, LAST_POSTS_CACHE_SEC)
|
||||
}
|
||||
|
||||
result.Data = list
|
||||
|
||||
Ссылка в новой задаче
Block a user