laravel에서 guzzle을 사용하여 외부 API에서 이미지에 액세스하려고합니다. 그러나 호출이 정말 비싸지고 페이지 로딩 시간에 큰 영향을줍니다. 프록시 호출이 문제를 해결할 것이라는 것을 알고 있지만, 특정 엔드 포인트가 프록시로 작동하여 이미지를 반환 할 수있는 라우트에서이를 달성 할 수있는 방법이 있습니다. 감사합니다프록시를 사용하여 외부 API에서 이미지 애셋 요청하기
1
A
답변
0
나는 내 자신의 문제에 대한 해결책을 찾았으며 답을 게시 할 것입니다. 더 나은 솔루션 즉, 이러한 호출을 처리하도록 서버를 구성하는 것이 좋습니다. 그러나 Laravel의 맥락에서, 내가 한 일이 여기있다.
I가 작동하도록 한 데이터
[
"orientation" => "portrait"
"fig_type" => "diagram"
"id" => "A_SDEF-05-2016-0003001"
"position" => "float"
"label" => "Figure 1."
"caption" => "some caption"
"link" => "/resource/id/A_SDEF-05-2016-0003001.tif"
]
해결책 :
1 단계 루프의 기능과 Laravel의 모음을 사용하여 데이터를 통해;
// Pass the link as a get request parameter to laravel route
// i.e. localhost/proxy/image?link=resource/id/A_SDEF-05-2016-0003001.tif
return collect($images)->each(function ($image)
{
if ($image['link']) {
$image['link'] = ltrim($image['link'],'/');
return $image['link'] ="link={$image['link']}";
}
return $image;
});
노선의 종점 등록 2 단계는 예를 들어 파일
Route::get('/proxy/image', '[email protected]_image');
3 단계 제어기 방법 즉 request_image는 목구멍 요청을 수행하고 응답을 반환 :
$link = request('link');
return \Response::stream(function() use($image){
echo $image;
},200, [$headers]);
4 단계 정적 기능 또는 출력되어 동적으로 일정한 기능을 갖는다을 html 당신은 img src에서 당신은 ProxyController 이미지 메쏘드를 호출 할 것이다. 즉
$img = '<img src="'. action('[email protected]_image',$image['link']).'") >";
- 스텝 5 출력
{!! Asset::image($image) !!} // Just output the built html
는 희망이 도움이 블레이드의 HTML : D는
는 u는이 경우 캐싱을 고려 했는가? –
그렇습니다. 호출이 이루어지면 캐싱을 제대로 사용하고 있지만, 처음에는 객체의 배열을 얻은 다음 각 객체가 특정 이미지를 가져 와서 검색해야하므로 첫 번째 호출은 비용이 많이 듭니다. 의미있는 희망 – alithedeveloper