Enable temporary caching of camera images to improve responsiveness of UI (#15614)

This commit is contained in:
Nicolas Mowen
2024-12-20 08:17:51 -06:00
parent 626ee19cc7
commit f718922c0c
4 changed files with 37 additions and 5 deletions

View File

@@ -20,6 +20,7 @@ class MediaLatestFrameQueryParams(BaseModel):
regions: Optional[int] = None
quality: Optional[int] = 70
height: Optional[int] = None
store: Optional[int] = None
class MediaEventsSnapshotQueryParams(BaseModel):

View File

@@ -179,7 +179,12 @@ def latest_frame(
return Response(
content=img.tobytes(),
media_type=f"image/{extension}",
headers={"Content-Type": f"image/{extension}", "Cache-Control": "no-store"},
headers={
"Content-Type": f"image/{extension}",
"Cache-Control": "no-store"
if not params.store
else "private, max-age=60",
},
)
elif camera_name == "birdseye" and request.app.frigate_config.birdseye.restream:
frame = cv2.cvtColor(
@@ -198,7 +203,12 @@ def latest_frame(
return Response(
content=img.tobytes(),
media_type=f"image/{extension}",
headers={"Content-Type": f"image/{extension}", "Cache-Control": "no-store"},
headers={
"Content-Type": f"image/{extension}",
"Cache-Control": "no-store"
if not params.store
else "private, max-age=60",
},
)
else:
return JSONResponse(