【问题标题】:Laravel image cache using Dropbox as disk使用 Dropbox 作为磁盘的 Laravel 图像缓存
【发布时间】:2019-10-15 13:45:49
【问题描述】:

我正在使用这个包 (https://github.com/spatie/flysystem-dropbox) 从 Dropbox 存储和获取图像。

这很好用,但每次刷新页面时都必须加载图像。我想知道您是否知道任何适用于这种情况的图像缓存解决方案,是否可以提供一个最小的工作示例。

谢谢。

【问题讨论】:

  • 您可以通过使用路由来提供图像来创建自己的基本缓存系统。对路由的请求将被路由到控制器,您可以在其中检查本地文件系统以查看文件是否存在。如果它不存在,请从 Dropbox 获取,将其保存到本地文件系统并提供服务。如果它已经存在于本地文件系统中,则从本地文件系统中提供它。
  • @Jeemusu 谢谢,请将此评论添加为答案

标签: laravel image caching dropbox


【解决方案1】:

解决此问题的一种方法是创建自己的缓存系统。如果您的本地文件系统上不存在该图像,请将其从 Dropbox 中拉出,然后将其保存到本地文件系统并提供服务。如果它已经存在于本地文件系统中,只需从本地文件系统中提供它。

1 条路线

从他们自己的路线提供图像。

Route::get('images/{filename}', [
    'uses'    => 'ImageController@getImage'
]);

2 控制器

检查本地文件系统,看文件是否已经存在,否则从dropbox拉取并存入本地文件系统。

<?php 

namespace App\Http\Controllers;

class ImageController extends Controller 

    public function __construct()
    {
        parent::__construct();
    }

    public function getImage($filename)
    {
        // If the file doesn't exist
        if(!file_exists('/path/to/' . $filename)) {

            // 1. Get the image from dropbox

            // 2. Save the image to local storage
        }

        // 3. Serve the image from local storage
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 2016-07-16
    • 2013-02-10
    • 2017-10-18
    • 2012-12-24
    • 2017-06-15
    • 2016-09-30
    相关资源
    最近更新 更多