0
오래 걸리지 않고 (~ 180ms) 내 레일 애플리케이션에서 쿼리를 받았지만 많은 결과를 반환합니다. 결과는 API에서 사용되며 결과를 JSON으로 변환하는 것은 비용이 많이 듭니다 (~ 3 초). 속도를 높이려면 다음과 같이 캐싱합니다.레일 : 쿼리 결과에 따라 캐시 무효화
key = 'new_prices'
query = Prices.new_this_month.where('...')
json = cache(key, expires_in: 60.minutes) do
render_to_string json: query, each_serializer: PriceSerializer
end
render json: json
백그라운드에서 새로운 가격을 데이터베이스에 추가 할 수 있습니다. query
의 결과가 변경되면 캐시가 무효화되는 방식으로 캐시 키를 생성 할 수 있습니까?
나는 레일스 3.2를 사용 중이며, dalli
보석을 통해 memcached를 사용하고 있습니다.
실제로 'created_at'날짜는 없지만 하나는 추론 할 수 있습니다. 또한 가격이 바뀌면 캐시가 무효화되지 않는다고 말하는 것이 옳은 것 같습니까? (나는'modified_at'을 가지고 있지 않습니다.) –
예, 가정이 맞습니다. 당신은 당신의 질문에 이것을 언급하지 않았다. 프래그먼트가 캐시 된 이후로 가격이 업데이트되었는지 확인하는 방법이 필요합니다. 그렇지 않으면 유일한 옵션은 수동으로 캐시를 무효화하는 것입니다. – fivedigit