markguinn / silverstripe-cloudassets
允许将某些或所有资产文件夹位于云存储容器中(CloudFiles等)
Requires
- silverstripe/framework: ~3.1
Suggests
- edlinklater/silverstripe-cloudassets-s3: Amazon S3 bucker driver
- markguinn/silverstripe-cloudassets-rackspace: Rackspace bucket driver
This package is not auto-updated.
Last update: 2024-09-14 13:42:26 UTC
README
允许您将所有或部分资产文件夹托管在云存储容器(CDN)中。
我会认为这是一个beta质量的软件。我们正在几个生产网站上使用它,但尚未在各种配置中进行广泛测试。您可能会遇到一些问题,并可能需要在将其彻底测试之前,先备份您的资产,尤其是如果您没有使用LocalCopy模式。
支持: 
要求
- Silverstripe 3.1+(针对3.1和master进行测试)
- 如果没有桶驱动程序(如)则不太有用
- Rackspace CloudFiles: https://github.com/markguinn/silverstripe-cloudassets-rackspace
- Amazon S3: https://github.com/edlinklater/silverstripe-cloudassets-s3
- (如果有人编写了其他版本,请通知我)
示例
假设您有一个名为site-uploads的CloudFiles容器
mysite/_config/cloudassets.yml
---
name: assetsconfig
---
CloudAssets:
map:
'assets/Uploads':
Type: RackspaceBucket
BaseURL: 'http://yourcdnbaseurl.com/'
Container: site-uploads
Region: ORD
Username: yourlogin
ApiKey: yourkey
LocalCopy: false
您可以通过这种方式映射多个文件夹,或者仅映射整个资产文件夹。
工作原理
- 将CloudFileExtension添加到File。
- 在onAfterWrite中,此扩展检查是否需要同步到云或更改为其包装类。
- 在此阶段,文件和图像记录被转换为相应的包装版本。可以通过
CloudAssets.wrappers
添加额外的包装类(如果您有File的其他子类)。请注意,任何未包装的子类将继续正常工作,并且不会使用云。 - 一旦封装,文件长度将在每个onAfterWrite时进行检查。如果磁盘上的文件已被替换,它将被上传到云存储,而本地版本将被截断为字符串'CloudFile'(见
CloudAssets.file_placeholder
配置)。注意:可以通过存储桶配置中的LocalCopy键更改此行为。如果是真的,文件将保持本地状态,并使用修改时间来保持云版本同步。 - 对于文件(图像等),封装类覆盖了Link、URL等,以指向文件的CDN版本。
这种设置允许您放弃通过s3fs、CloudFuse等挂载云存储,但不应需要更改Silverstripe文件子系统。
此设置不适用的情况
- 无写存储的托管。资产文件夹不需要永久存在,但需要使用。按请求的永久性可能足够,尽管可能不是最佳方案。
开发者
- Mark Guinn mark@adaircreative.com
欢迎通过pull request和/或错误报告做出贡献。请遵循Silverstripe代码标准(测试会很好)。
我希望有人实现其他驱动程序——S3、Swift、Google等。实现驱动程序非常容易——只需扩展CloudBucket并实现一些方法即可。
许可证(MIT)
版权所有(c)2014 Mark Guinn
在此特此免费授予任何获得本软件及其相关文档文件(“软件”)副本的人无限制地处理该软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,以及允许获得该软件的人这样做,但受以下条件约束
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式的质量保证,无论是明示的、暗示的,还是与特定目的相关的或侵权性的,包括但不限于适销性、适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论此类责任是基于合同、侵权或其他原因,以及与软件或其使用或其他方式有关。