Most likely because it makes alot of different tests on the page. Is a screenshot of the page all you need? If so try browsershot
Jan 31, 2022
4
Level 12
How to improve an API call to Google
Hey!
I'm using Google APIs to retrieve a screenshot of a specific website. After getting the API response I'm creating a jpg using Image Intervention. The GET request I'm sending:
https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url={WEBSITE_LINK}&screenshot=true
and my code looks like this:
if(
(
$api_response = @file_get_contents("https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=" . $websiteURL . "&screenshot=true")
) !== false
) {
$result = json_decode($api_response, true);
$screenshot1 = $result['lighthouseResult']['audits']['final-screenshot']['details']['data'];
$screenshot = str_replace(array('_','-'),array('/','+'),$screenshot1);
$screenshot_name = 'logos/' . $request->domain . '.jpg';
Image::make(file_get_contents($screenshot1))->resize(120, 120)->save(public_path() . '/' . $screenshot_name);
}
But it's way too slow. Can you suggest me something to speed up this process? Do you have any idea why it takes up to 30 seconds to get a response from this GET request?
Level 102
@Laralex well that url is specifically pagespeedonline. So it makes sense that it tests stuff. Consider breaking it up into smaller tests
- Check site exists
- Take picture
- Get meta data
Please or to participate in this conversation.