首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Laravel中缓存图像的最有效方法

在Laravel中缓存图像的最有效方法
EN

Stack Overflow用户
提问于 2019-12-09 17:59:19
回答 1查看 419关注 0票数 1

我正在开发一个Laravel应用程序,其中我需要显示来自Instagram的CDN的图像,我认为缓存这些图像而不是不断查询CDN是一个好主意。

我发现Intervention Image Cache是满足我的需求的唯一选择。我写了一个简单的路由,包括传递部分CDN url,然后调用一个控制器来缓存图像。我必须指出,我使用FileSystem存储作为缓存驱动程序。

routes/web.php

代码语言:javascript
复制
Route::get('/img/{code}/', 'PostController@setImageCached');

app/Http/Controllers/PostController.php

代码语言:javascript
复制
public function setImageCached($code) {
        $cdn_image = $this->getImage($code);
        $img = Image::cache(function($img) use($cdn_image){
            return $img->make($cdn_image);
        }, 10);
        return Response::make($img, 200, array('Content-Type' => 'image/jpeg'));
    }

虽然它可以工作,但它的速度非常慢,几乎是直接从CDN获取图像的速度的三倍,所以要么是我使用了错误的库,要么是它没有缓存图像。

有没有更好的方法来缓存来自CDN的图片,以便我的应用程序不必不断查询Instagram的CDN?

EN

回答 1

Stack Overflow用户

发布于 2019-12-09 18:45:19

您可以尝试内置的Laravel缓存机制。不确定您正在使用的库是如何工作的,因此这可能是一种更可靠的方法。

代码语言:javascript
复制
public function setImageCached($code) {
        $cdn_image = $this->getImage($code);
        $img = Cache::remember('image_'.$cdn_image, 10, function () use ($cdn_image) {  
           return file_get_contents($cdn_image);
        });
        return Response::make($img, 200, array('Content-Type' => 'image/jpeg'));
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59246396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档