20 lines
563 B
Python
20 lines
563 B
Python
import hashlib
|
|
|
|
from django.conf import settings
|
|
from django.core.cache import cache
|
|
from storages.backends.s3boto3 import S3Boto3Storage
|
|
|
|
|
|
class CachedS3Boto3Storage(S3Boto3Storage):
|
|
def url(self, name, **kwargs):
|
|
key = hashlib.md5(f'recipes_media_urls_{name}'.encode('utf-8')).hexdigest()
|
|
if result := cache.get(key):
|
|
return result
|
|
|
|
result = super(CachedS3Boto3Storage, self).url(name, **kwargs)
|
|
|
|
timeout = int(settings.AWS_QUERYSTRING_EXPIRE * .95)
|
|
cache.set(key, result, timeout)
|
|
|
|
return result
|