Устранение неполадок кэширования nginx для статических ресурсов

Устранение неполадок кэширования nginx для статических ресурсов

У меня есть сайт на 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 для загрузки изображений из вашего приложения.

Связанный контент