Laravel Image Cache比源慢

Eri*_*ric 4 php image-caching laravel-4 laravel-routing

我正在使用Intervention/imagecache来缓存我的图像.但是,缓存图像的加载速度比源图像文件慢.几乎额外的60-70毫秒的时间latancy(测试铬检查元件网络)

这是我在Route.php上加载图像的代码

    Route::get('images/cars/{src}', function ($src){    
        $cacheimage = Image::cache(function($image) use($src){
            return $image->make("images/products/".$src);
        },1440);

        return Response::make($cacheimage,200, array('Content-Type'=>'image/jpg'));
    });
Run Code Online (Sandbox Code Playgroud)

在刀片中

<img src="{{ URL::asset('/images/cars/theimage.jpg' }}" alt="">
Run Code Online (Sandbox Code Playgroud)

存储图像缓存的任何想法或更好的方法?

Chr*_*rdt 7

我从未使用过laravel,但这是一个普遍的问题.

如果让web服务器处理将图像传送到客户端,则不会启动php解释器.

如果你通过PHP提供一些东西(我假设,因为你写了一些关于缓存的图像),你需要PHP解释器.然后你需要执行脚本,并且它的所有逻辑(使用脚本语言总是较慢,然后是本机的).

最好的办法是,将图像保存在文件系统上,然后链接到它,而不是PHP脚本.

这意味着例如:

在应用程序的某处,您有一个点,即创建原始图像的位置.现在想一想,你需要什么版本的它.调整大小,裁剪,编辑它你想要的.在文件系统中保存所需的每个版本.所以你必须,而不是image.jpg一个image-200x200-cropped-with-branding.jpg.此时,性能不应该那么重要(图像将被查看数千次,但只创建一次).

你想拥有

<img src="/path/to/image-200x200-cropped-with-branding.jpg">;
Run Code Online (Sandbox Code Playgroud)

代替

<img src="/image.php?param1=1&param2=2">;
Run Code Online (Sandbox Code Playgroud)

  • PHP解释器是一回事,引导整个框架使它更糟糕...... (2认同)