
У меня есть сайт на Django, где пользователи публикуют изображения, доступные для просмотра всему сообществу (что-то вроде 9gag).
Я использую хранилище Azure для сохранения и обслуживания изображений. Веб-сервер — это обратный прокси-сервер nginx + коктейль gunicorn. Gzip запущен и работает на моем сайте. Более того, для кэширования статических ресурсов в моем файле конфигурации nginx есть следующее:
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ { root /home/mhb11/project/myproject; expires 24h; add_header Vary Accept-Encoding; access_log off; }
Проблема в том, что когда я тестирую свой сайт с помощью плагина Google Page Speed, я получаю сообщение о том, что ни одно из изображений, отправляемых из хранилища Azure, не кэшируется:
Что мне сделать, чтобы включить кэширование для них? Пожалуйста, посоветуйте. Я совсем новичок в этом, поэтому любая помощь на этом этапе будет большой помощью. Заранее спасибо и хороших выходных.
Вот def _save
метод моего пользовательского класса Storage, который загружает большой двоичный объект:
def _save(self,name,content):
blob_service = BlobService(account_name=accountName, account_key=accountKey)
import mimetypes
small_content = content
content.open()
content_type = None
if hasattr(content.file, 'content_type'):
content_type = content.file.content_type
else:
content_type = mimetypes.guess_type(name)[0]
content_str = content.read()
blob_service.put_blob(
'pictures',
name,
content_str,
x_ms_blob_type='BlockBlob',
x_ms_blob_content_type=content_type
)
Как мне настроить Cache-Control?
решение1
Вам необходимо будет задать информацию метатега «Cache-Control» в Azure Storage/blob.
Я использую AWS, и там я могу перейти к конкретному ресурсу (вашим изображениям) и указать эту информацию.
Кроме того, вы должны иметь возможность указать этот параметр, если используете какой-либо API для загрузки изображений из вашего приложения.