markguinn/silverstripe-cloudassets

允许将某些或所有资产文件夹位于云存储容器中(CloudFiles等)

安装: 9,221

依赖项: 4

建议者: 0

安全性: 0

星标: 19

关注者: 8

分支: 9

开放问题: 12

类型:silverstripe-module

1.1.0 2014-10-17 09:54 UTC

This package is not auto-updated.

Last update: 2024-09-14 13:42:26 UTC


README

允许您将所有或部分资产文件夹托管在云存储容器(CDN)中。

我会认为这是一个beta质量的软件。我们正在几个生产网站上使用它,但尚未在各种配置中进行广泛测试。您可能会遇到一些问题,并可能需要在将其彻底测试之前,先备份您的资产,尤其是如果您没有使用LocalCopy模式。

版本: 最新稳定版本 最新不稳定版本

许可证: 许可证

质量: 构建状态 Scrutinizer质量分数 codecov.io

支持: ![Gitter](https://badges.gitter.im/Join Chat.svg)

要求

示例

假设您有一个名为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

您可以通过这种方式映射多个文件夹,或者仅映射整个资产文件夹。

工作原理

  1. 将CloudFileExtension添加到File。
  2. 在onAfterWrite中,此扩展检查是否需要同步到云或更改为其包装类。
  3. 在此阶段,文件和图像记录被转换为相应的包装版本。可以通过CloudAssets.wrappers添加额外的包装类(如果您有File的其他子类)。请注意,任何未包装的子类将继续正常工作,并且不会使用云。
  4. 一旦封装,文件长度将在每个onAfterWrite时进行检查。如果磁盘上的文件已被替换,它将被上传到云存储,而本地版本将被截断为字符串'CloudFile'(见CloudAssets.file_placeholder配置)。注意:可以通过存储桶配置中的LocalCopy键更改此行为。如果是真的,文件将保持本地状态,并使用修改时间来保持云版本同步。
  5. 对于文件(图像等),封装类覆盖了Link、URL等,以指向文件的CDN版本。

这种设置允许您放弃通过s3fs、CloudFuse等挂载云存储,但不应需要更改Silverstripe文件子系统。

此设置不适用的情况

  • 无写存储的托管。资产文件夹不需要永久存在,但需要使用。按请求的永久性可能足够,尽管可能不是最佳方案。

开发者

欢迎通过pull request和/或错误报告做出贡献。请遵循Silverstripe代码标准(测试会很好)。

我希望有人实现其他驱动程序——S3、Swift、Google等。实现驱动程序非常容易——只需扩展CloudBucket并实现一些方法即可。

许可证(MIT)

版权所有(c)2014 Mark Guinn

在此特此免费授予任何获得本软件及其相关文档文件(“软件”)副本的人无限制地处理该软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,以及允许获得该软件的人这样做,但受以下条件约束

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何形式的质量保证,无论是明示的、暗示的,还是与特定目的相关的或侵权性的,包括但不限于适销性、适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论此类责任是基于合同、侵权或其他原因,以及与软件或其使用或其他方式有关。