针对静态资产的 Nginx 缓存进行故障排除

针对静态资产的 Nginx 缓存进行故障排除

我有一个 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 从应用程序上传图像,您应该能够指定此设置。

相关内容