webravolab / cdn
Webravo 自定义 CDN 资产管理器
Requires
- php: ^7.0
- gregwar/image: 2.*
- guzzlehttp/guzzle: ^6.0
README
Laravel 的内容分发网络包
该包处理自动图像处理并将上传到远程 CDN。
包含两个远程 CDN 提供商,一个自定义的和一个 Google 存储桶驱动程序,但你也可以实现自己的驱动程序来与任何标准 CDN(如 AWS、Cloudflare 等)接口。
Laravel 支持
- 与 Laravel 5.2 进行了测试
- 未对更高版本的 Laravel 进行测试
使用方法
使用 Cdn 门面进行交互,例如从您的 blade 模板中
<img src="{{ Cdn::image('/img/image.png') }}"/>
最简单的示例,没有任何选项
<img src="{{ Cdn::image('/img/source-image.png', ['name' => '/images/cdn-image.png', 'type' => 'png', 'mode' => 'resize', 'size' => '150x100', 'background' => 'black', 'overwrite' => true]) }}"/>
复杂的图像转换和自定义名称
图像处理选项
完整的语法是
Cdn::image($source_file, array $options)
源文件必须是相对于 public 目录的文件名路径。
选项是以下选项的组合
- name:图像上传到 Cdn 的路径和名称
- mode:图像处理,以下之一
- resize
- forceresize
- zoom
- zoomcrop
- crop
- cropresize
- scale
- resizecanvas
- cropauto
- type:图像输出类型,以下之一 "png"、"jpg"、"jpeg"、"gif",可能与源图像类型不同,从而导致类型转换。
- size:所需图像的大小,格式为 [nnn]x[nnn](例如 100x150)
- position:对于需要起始位置的图像处理(裁剪等),起始位置格式为 [nnn]-[nnn] 或 [nnn]x[nnn]
- background:以下之一 "white"、"black" 或 "transparent",或以 #rrggbb 颜色代码设置图像背景
- quality:图像处理压缩的值 0-100(png / jpg)
- overwrite:true/false 以绕过配置参数
- checksize:true/false 以绕过配置参数
安装
通过 Composer
在您的项目中需要 webravolab/cdn
composer require webravolab/cdn
要使用 Google 存储驱动程序,您还必须安装 Google Api 客户端和 Webravolab Layers
composer require google/apiclient:^2.2 composer require webravolab/layers:^1.0
您必须手动注册服务提供程序
将服务提供程序添加到 config/app.php
'providers' => array( //... Webravolab\Cdn\CdnServiceProvider::class, ),
发布默认配置文件
php artisan vendor:publish webravolab/cdn
要使用 Google 存储驱动程序,您必须添加以下配置变量到您的环境
GOOGLE_APPLICATION_NAME="<your app name>"
GOOGLE_CLIENT_ID="<your client id>"
GOOGLE_CLIENT_SECRET="<your secret key>"
GOOGLE_DEVELOPER_KEY="<your developer key>"
GOOGLE_REDIRECT="urn:ietf:wg:oauth:2.0:oob"
GOOGLE_SERVICE_ENABLED=true
GOOGLE_APPLICATION_CREDENTIALS="<absolute path of your service account configuration json file>"
GOOGLE_STORAGE_DEFAULT_BUCKET="<default bucket name>"
GOOGLE_STORAGE_IMAGE_CACHE_TTL=86400
依赖项
此包依赖于处理图像的奇妙 gregwar/image 和管理资产上传到 CDN 的 guzzlehttp/guzzle。
配置
配置复制到 config/webravo_cdn.php
默认提供程序
'default' => 'Webravo',
或
'default' => 'GoogleStorage',
CDN 提供程序配置
对于 Webravo 提供程序,您只需定义您的 CDN URL 和上传资产的特定 URL。对于 Google 存储提供程序,您必须定义远程存储桶名称、默认 TTL 和要附加到资产的存储 URL。
可选地,您还可以定义另一个存储桶(cdn_bucket),在创建资产 URL 时使用,以防您处理用于上传和检索的单独存储桶。如果省略,则使用相同的存储桶名称。
'providers' => [ 'Webravo' => [ 'url' => 'https://www.my-cdn.com', 'upload_url' => 'https://www.my-cdn.com/cdn/upload', ], 'GoogleStorage' => [ 'bucket' => '<bucket>', 'ttl' => '86400' 'url' => 'https://storage.googleapis.com', 'cdn_bucket' => '<bucket>', ]],
绕过
要禁用 CDN 并从本地机器加载您的资产进行测试,请将 bypass 选项设置为 true
'bypass' => true,
如果源文件缺失,不要覆盖 CDN 图像
默认情况下,缺失的图像被回退图像(overwrite = true)替换。要更改此行为,请在配置文件中将 overwrite 设置为 false。
'overwrite' => false,
也可以将覆盖标志作为可选参数传递给任何 Cdn:: 调用。
检查文件大小更改
默认情况下,文件大小不会用于检测图像变化,只使用修改日期。要启用文件大小检查,请在配置文件中将checksize设置为true。
'checksize' => true,
checksize标志也可以作为可选参数传递给任何Cdn::调用。
Elixir资产
(仅Webravo提供者)
{{Cdn::elixir('assets/js/main.js')}} // example result: https://www.my-cdn.com/build/assets/js/main-85cafe36ff.js {{Cdn::elixir('assets/css/style.css')}} // example result: https://www.my-cdn.com/build/assets/css/style-2d558139f2.css
注意:这里的elixir与Laravel的elixir工作方式相同,它从构建文件夹加载manifest.json文件,并选择由gulp生成的正确文件修订版。
注意:目前,elixir命令不会将资产复制到Cdn,而是简单地添加/替换URL为Cdn URL。
测试
没有可用的测试。
支持
贡献
- 这是一个为Webravo内部使用而重定制的包。你应该将其分叉并尝试自定义以适应您的需求。
致谢
- 在通用代码组织和外观接口方面深受Vinelab/cdn包的启发。
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。