fix: Remove browser cache headers to prevent stale roster data
Users were seeing stale roster data on the website even after updates because browsers cached responses for 30 minutes. Direct API calls showed correct data, confirming this was a client-side caching issue. Changes: - Remove @add_cache_headers decorators from all player endpoints - Keep @cache_result (Redis server-side caching) for performance - Server cache still gets invalidated on write operations Benefits: - Users always see fresh data (within Redis TTL of 30 minutes max) - Server cache invalidation now effective for end users - Minimal performance impact (~10ms Redis lookup vs 0ms browser cache) - Redis already provides 80-90% of caching benefit Trade-off: - Browsers now make request to server on every page load - Server handles more requests but Redis makes them fast - For fantasy sports, fresh data > marginal performance gain Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
be7b1b5d91
commit
2c9000ef4b
@ -6,7 +6,7 @@ Thin HTTP layer using PlayerService for business logic.
|
||||
from fastapi import APIRouter, Query, Response, Depends
|
||||
from typing import Optional, List
|
||||
|
||||
from ..dependencies import oauth2_scheme, add_cache_headers, cache_result, handle_db_errors, invalidate_cache
|
||||
from ..dependencies import oauth2_scheme, cache_result, handle_db_errors
|
||||
from ..services.base import BaseService
|
||||
from ..services.player_service import PlayerService
|
||||
|
||||
@ -15,7 +15,6 @@ router = APIRouter(prefix="/api/v3/players", tags=["players"])
|
||||
|
||||
@router.get("")
|
||||
@handle_db_errors
|
||||
@add_cache_headers(max_age=30 * 60) # 30 minutes
|
||||
@cache_result(ttl=30 * 60, key_prefix="players")
|
||||
async def get_players(
|
||||
season: Optional[int] = None,
|
||||
@ -48,7 +47,6 @@ async def get_players(
|
||||
|
||||
@router.get("/search")
|
||||
@handle_db_errors
|
||||
@add_cache_headers(max_age=15 * 60) # 15 minutes
|
||||
@cache_result(ttl=15 * 60, key_prefix="players-search")
|
||||
async def search_players(
|
||||
q: str = Query(..., description="Search query for player name"),
|
||||
@ -67,7 +65,6 @@ async def search_players(
|
||||
|
||||
@router.get("/{player_id}")
|
||||
@handle_db_errors
|
||||
@add_cache_headers(max_age=30 * 60) # 30 minutes
|
||||
@cache_result(ttl=30 * 60, key_prefix="player")
|
||||
async def get_one_player(
|
||||
player_id: int,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user