(caching) improve s3 backend by specifying cache-control and content-type

This commit is contained in:
David Manouchehri 2024-01-03 13:44:28 -05:00 committed by GitHub
parent b103ab1f0b
commit c54e0813b4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -155,6 +155,7 @@ class S3Cache(BaseCache):
# Convert value to JSON before storing in S3
serialized_value = str(value)
if ttl is not None:
cache_control = f"immutable, max-age={ttl}, s-maxage={ttl}"
import datetime
# Calculate expiration time
@ -166,11 +167,18 @@ class S3Cache(BaseCache):
Key=key,
Body=serialized_value,
Expires=expiration_time,
CacheControl=cache_control,
ContentType="application/json"
)
else:
cache_control = "immutable, max-age=31536000, s-maxage=31536000"
# Upload the data to S3 without specifying Expires
self.s3_client.put_object(
Bucket=self.bucket_name, Key=key, Body=serialized_value
Bucket=self.bucket_name,
Key=key,
Body=serialized_value,
CacheControl=cache_control,
ContentType="application/json"
)
except Exception as e:
# NON blocking - notify users S3 is throwing an exception