我有一个 Django 网站,用户可以在其中发布图像供整个社区查看(有点像 9gag)。
我使用 Azure 存储来保存和提供图像。Web 服务器是 nginx 反向代理 + gunicorn 组合。Gzip 已在我的网站上启动并运行此外,为了缓存静态资产,我在 nginx conf 文件中添加了以下内容:
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 类的上传 blob 的方法:
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
您需要在 Azure Storage/blob 中设置“Cache-Control”元标记信息。
我使用 AWS,在那里我可以转到特定资产(您的图像)并指定该信息。
此外;如果您使用某种 API 从应用程序上传图像,您应该能够指定此设置。