Official solution
SimpleCache = pehli baar hisaab karke copy rakh lo, doosri baar copy dikha do.
Baar-baar same expensive kaam (DB query, counting bookings) mat karo. Result Redis jaise store mein timeout ke saath rakh do.
Cache hit: key mil gayi, DB skip. Cache miss: DB se lao, SET karo, return karo.
Tradeoff: speed vs stale data. Admin naya venue add kare aur cache 50s ka ho to user purani list dekh sakta hai — isliye write pe invalidation zaroori hai.
Browser cache, Flask-Caching, Redis alag layers hain. MAD2 examiner Redis + @cache.cached code dekhta hai.
Example
@cache.cached(timeout=50, query_string=True)
@app.route('/api/shows')
def shows():
return jsonify([s.serialize() for s in Show.query.all()])
Project example: Admin dashboard counts / venues list cache. Create/update/delete ke baad cache.delete('venues').
Viva tipprint('DB queried') function ke andar laga ke miss/hit demo karo — hit pe print nahi chalega.