【问题标题】:Laravel & CDN IntegreationLaravel 和 CDN 集成
【发布时间】:2014-09-10 14:10:41
【问题描述】:

我正在使用 PHP 框架 laravel,并且刚刚购买了 CDN 服务器计划。

我想知道是否有人曾经或建议将 laravel 的一些核心文件移动到 CDN 上以减少加载时间?

【问题讨论】:

  • 通过核心文件,我假设您是指 css、js 和图像?通常核心是指代码(在这种情况下是 PHP)
  • 并向所有人公开您的服务器端代码?你在说什么文件?
  • 你可以尝试使用jare.io,一个免费的即时CDN

标签: php laravel cdn


【解决方案1】:

将 Laravel 核心文件移动到 CDN 会增加,而不是减少,您的加载时间。想想看 - 你的服务器需要获取网络上的所有 PHP 脚本,每个文件一个请求,这将产生大量数据。 PHP fopen 包装器也不支持缓存,因此您将失去 CDN 的主要优势。

如果您真的想减少磁盘 I/O(听起来这就是您想要实现的目标),请考虑使用操作码缓存(memcache、eAccelerator)。这会将您的 PHP 代码以其执行前编译的形式缓存在 RAM 中,这样您就可以安全地将解释步骤从大多数请求中抛出,从而加快页面加载速度。

或者切换到 PHP5.5,虽然它还没有完全准备好,因为它有一个内置的操作码缓存。

【讨论】:

  • 这个问题甚至没有意义。 CDN 通常用于静态资产(images/js/css, ...)。不用于服务器端代码。
  • @mpm:您仍然可以为 PHP 文件使用 CDN。这很愚蠢,但这是可能的。我详细说明了这样做很愚蠢的原因......我还要补充一点:您需要在您的服务器上启用远程 PHP 包含才能使其工作,这是一个巨大的安全漏洞,因为它无法在每个目录的基础。
  • 对不起,我的意思是增加加载时间。但我明白你的意思,谢谢。我现在将研究 memcache
【解决方案2】:

这是一个用于 Laravel 的 CDN 资产管理器包,默认支持 Amazon S3。

https://github.com/Vinelab/cdn

通过 Composer 安装它:

    {
    "require": {
        "vinelab/cdn": "*"
    }

添加您的 CDN 凭据:

        'credentials' => [
            'key'    => '',
            'secret'    => '',
        ],

        'buckets' => [
            'bucket-name-here' => '*',
        ]

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

'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
],

用法:

  1. 运行此工匠命令将您的资产推送到 CDN。

    php artisan cdn:push

  2. 在您的视图或代码中的其他任何地方使用它:

    {{ Cdn::asset('public/assets/js/script.js') }}

    {{ Cdn::asset('public/assets/css/main.css') }}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    • 2021-05-04
    • 2019-05-23
    • 2018-03-12
    • 2015-10-10
    相关资源
    最近更新 更多