diegohq/cdn

此包已被弃用且不再维护。作者建议使用 betalabs/cdn 包。

Laravel 的内容分发网络 (CDN) 包,原始仓库未更新至 Laravel 5.6

维护者

详细信息

github.com/Betalabs/cdn

源代码

v1.10.1 2022-07-11 12:30 UTC

README

Total Downloads Latest Stable Version Latest Unstable Version Build Status Scrutinizer Code Quality License

Laravel 内容分发网络 (CDN) 包

该包允许开发人员使用单条 artisan 命令上传其资产(或任何公开文件)到 CDN,然后允许他在本地版本和在线版本之间切换文件。

Laravel 支持

亮点

  • Amazon Web Services - S3
  • Artisan 命令上传内容到 CDN
  • 简单的 Facade 来访问 CDN 资源

安装

通过 Composer

在项目中要求 vinelab/cdn

composer require vinelab/cdn:*

由于这是一个 Laravel 包,我们需要注册服务提供者

将服务提供者添加到 config/app.php

'providers' => array(
     //...
     Vinelab\Cdn\CdnServiceProvider::class,
),

配置

.env 文件中设置凭证。

注意:您必须在项目根目录中有一个 .env 文件,以保存您的敏感信息。

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=

发布包配置文件

php artisan vendor:publish vinelab/cdn

您可以在 config/cdn.php 中找到它

默认提供者
'default' => 'AwsS3',
CDN 提供者配置
'aws' => [

    's3' => [
    
        'version'   => 'latest',
        'region'    => '',


        'buckets' => [
            'my-backup-bucket' => '*',
        ]
    ]
],
多个存储桶
'buckets' => [

    'my-default-bucket' => '*',
    
    // 'js-bucket' => ['public/js'],
    // 'css-bucket' => ['public/css'],
    // ...
]

文件 & 目录

包含

指定要上传的目录、扩展名、文件和模式。

'include'    => [
    'directories'   => ['public/dist'],
    'extensions'    => ['.js', '.css', '.yxz'],
    'patterns'      => ['**/*.coffee'],
],
排除

指定要忽略的内容。

'exclude'    => [
    'directories'   => ['public/uploads'],
    'files'         => [''],
    'extensions'    => ['.TODO', '.txt'],
    'patterns'      => ['src/*', '.idea/*'],
    'hidden'        => true, // ignore hidden files
],
URL

设置 CDN URL

'url' => 'https://s3.amazonaws.com',
HTTP

设置 HTTP 参数

'http' => '['verify' => path-to-your-pem-certificate-file]',
绕过

为了在测试或开发期间加载您的本地资源,将 bypass 选项设置为 true

'bypass' => true,
Cloudfront 支持
'cloudfront'    => [
    'use' => false,
    'cdn_url' => ''
],
其他配置
'acl'           => 'public-read',
'metadata'      => [ ],
'expires'       => gmdate("D, d M Y H:i:s T", strtotime("+5 years")),
'cache-control' => 'max-age=2628000',

您可以始终参考 AWS S3 文档以获取更多信息:aws-sdk-php

使用方法

推送

将资源上传到CDN

php artisan cdn:push

清空

从CDN删除资源

php artisan cdn:empty

加载资源

使用外观 Cdn 来调用 Cdn::asset() 函数。

注意:这里的 asset 与 Laravel 的 asset 功能相同,它将从 public/ 目录开始查找资源。

{{Cdn::asset('assets/js/main.js')}}        // example result: https://js-bucket.s3.amazonaws.com/public/assets/js/main.js

{{Cdn::asset('assets/css/style.css')}}        // example result: https://css-bucket.s3.amazonaws.com/public/assets/css/style.css

注意:这里的 elixir 与 Laravel 的 elixir 功能相同,它从构建文件夹中加载 manifest.json 文件,并选择由 gulp 生成的正确文件版本。

{{Cdn::elixir('assets/js/main.js')}}        // example result: https://js-bucket.s3.amazonaws.com/public/build/assets/js/main-85cafe36ff.js

{{Cdn::elixir('assets/css/style.css')}}        // example result: https://css-bucket.s3.amazonaws.com/public/build/assets/css/style-2d558139f2.css

要从 public/ 目录外部使用文件,在 app/ 中的任何地方使用 Cdn::path() 函数。

{{Cdn::path('private/something/file.txt')}}        // example result: https://css-bucket.s3.amazonaws.com/private/something/file.txt

测试

要运行测试,请在项目文件夹中运行以下命令。

$ ./vendor/bin/phpunit

支持

在 Github 上

贡献

请参阅 CONTRIBUTING 以获取详细信息。

安全

如果您发现任何与安全相关的问题,请发送电子邮件至 mahmoud@vinelab.com,而不是使用问题跟踪器。

鸣谢

许可

MIT 许可证 (MIT)。请参阅 许可文件 以获取更多信息。