我正在寻找可能设置CDN以用于我的Wagtail网站。我认为这将是在阶段/生产推送期间管理媒体上传的更有效方式,因为现在必须在部署时手动将媒体文件夹从服务器复制到服务器。如果从CDN访问所有图像,那么这不是一个问题。
这是我第一次使用CDN,所以我正在寻求建议。关于使用带有WordPress的CDN有很多信息,但没有很多关于使用Wagtail / Django设置一个的文档。我有以下问题:
此外,如果有一种更有效的方式来处理从一个环境到另一个环境的媒体上传传输,而不是使用CDN,我也很乐意听到您对此的建议。截至目前,我在部署后不得不复制媒体文件夹,每次我对网站进行更改时都必须这样做。
提前感谢您的协助。
答案 0 :(得分:2)
以下资源可以帮助您在Wagtail中进行必要的设置(今天晚些时候我可以为您提供更多详细信息):
页面的前端缓存无效器(不仅适用于静态文件和媒体文件)
链接:http://docs.wagtail.io/en/latest/reference/contrib/frontendcache.html#frontendcache-aws-cloudfront
在Amazon Web Services S3存储区中存储媒体文件
这应该是更好的解决方案,而不是将媒体文件从服务器复制到服务器。在这种情况下,亚马逊网络服务CloudFront(CDN)将是一个完美的选择。
链接:https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html#amazon-s3
更多信息CloudFront:https://aws.amazon.com/cloudfront/
使用Django Whitenoise进行静态文件缓存失效
可以清除新部署的缓存(静态文件将具有唯一的文件名,因此CDN将在部署后从其来源获得新的文件缓存)
链接:http://whitenoise.evans.io/en/stable/django.html
来自AWS的CloudFront将由我个人选择CDN。除了AWS提供的强大资源/服务外,CloudFront还易于设置并拥有最好的CDN之一。
最后,用于提供静态和媒体文件的CDN与Wagtail无关。有一些(见上面的列表)Django本身可用的好应用程序,但你可以自由选择另一个CDN解决方案(如Cloudflare)。
因此,为每个环境(tst / acc / stg / prd)设置AWS S3 Bucket并使用它来上传媒体文件(因此文件不再在服务器上)并设置CloudFront分配这些桶将是解决您问题的正确方法。
祝你好运, Rob Moorman