Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Laravel中缓存url中的图像_Php_Laravel 4 - Fatal编程技术网

Php 如何在Laravel中缓存url中的图像

Php 如何在Laravel中缓存url中的图像,php,laravel-4,Php,Laravel 4,我有一个Laravel4应用程序,它显示位于远程服务器上的另一个PHP应用程序的图像 我想知道在本地Laravel应用程序上缓存远程服务器的图像的最佳解决方案是什么 请注意,几乎不可能从远程服务器复制/通过整个images目录,因为有超过150k个映像需要定期更新(每分钟一次),而且还存在数据库关联(数据库中的文件名和列值) 我正要使用Rsync同步两个目录(远程与本地),但我还需要在显示图像之前调整图像大小,并以与远程服务器不同的方式组织图像子目录 首先,我在Laravel上安装了该软件包,并

我有一个Laravel4应用程序,它显示位于远程服务器上的另一个PHP应用程序的图像

我想知道在本地Laravel应用程序上缓存远程服务器的图像的最佳解决方案是什么

请注意,几乎不可能从远程服务器复制/通过整个images目录,因为有超过150k个映像需要定期更新(每分钟一次),而且还存在数据库关联(数据库中的文件名和列值)

我正要使用
Rsync
同步两个目录(远程与本地),但我还需要在显示图像之前调整图像大小,并以与远程服务器不同的方式组织图像子目录

首先,我在Laravel上安装了该软件包,并创建了一条
路线

Route::get('photos/item/{size}/{reference}/{photo}', 'ImgController@showImg');
ImgController
中:

public function showImg( $size, $reference, $photo )
{
    switch ( $size ) {
       case '300x225':
          $jpg = Image::make( 'http://myremoteapp.com/uploads/' . $reference . '/' . $photo )->resize( 300, 225 )->response( 'jpg' );
       break;
    }
    return $jpg;
}
这是可行的,但它不会将图像保留在浏览器的缓存中,而且还会产生性能问题,因为每次打开页面时都必须下载图像并调整其大小

我听说过,但我不确定它是否适用于从URL拍摄的图像


对于如何以适当方式解决此问题的任何建议,我们将不胜感激。

您可以使用缓存路由作为:

Route::filter('cache', function($route, $request, $response = null) {
    $key = 'route-' . safe_title(URL::full());
    if( is_null($response) && Cache::has($key) ) {
        return Cache::get($key);
    } elseif( !is_null($response) && !Cache::has($key) ) {
        // Code this here
        Cache::put($key, $response->getContent(), 30);
    }
});

    Route::group(array( 'before' => 'cache', 'after' => 'cache' ), function() {
    Route::get('photos/item/{size}/{reference}/{photo}', 'ImgController@showImg');
});
注意: Route::filter()已从Laravel中删除,因为>5.0