Webravo 自定义 CDN 资产管理器

0.2.9 2019-04-30 11:22 UTC

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。

测试

没有可用的测试。

支持

在Github上

贡献

  • 这是一个为Webravo内部使用而重定制的包。你应该将其分叉并尝试自定义以适应您的需求。

致谢

  • 在通用代码组织和外观接口方面深受Vinelab/cdn包的启发。

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件