У меня есть веб-сайт Django, на котором пользователи публикуют изображения для всеобщего обозрения (вроде 9gag).
Я использую хранилище Azure для сохранения и обслуживания изображений. Веб-сервер представляет собой обратный прокси-сервер nginx + коктейль-пулемет. 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?
Вам нужно будет установить информацию о метатеге «Cache-Control» в хранилище Azure / blob.
Я использую AWS, и там я могу перейти к конкретному активу (вашим изображениям) и указать эту информацию.
Также; вы должны иметь возможность указать этот параметр, если вы используете какой-либо API для загрузки изображений из вашего приложения.