2014-11-21 54 views
2

我正在制作PHP Google App Engine网站,并且我发现从Google Cloud服务请求图片会导致页面加载速度非常慢。从Google Cloud请求图片会使页面非常缓慢

如果不加载图像,加载页面大约需要0.5秒,图像加载需要10-15秒。我认为我做错了什么,所以任何帮助将不胜感激。

See this example

我的代码

require_once "google/appengine/api/cloud_storage/CloudStorageTools.php"; 
use google\appengine\api\cloud_storage\CloudStorageTools; 

... 

function cloudStorageUrl($url, $size, $crop) { 
    if (file_exists($url)) { 
     $object_image_url = CloudStorageTools::getImageServingUrl($object_image_file, ['size' => $size, 'crop' => $crop]); 
     return $object_image_url; 
    } 
    else { 
     return false; 
    } 
} 
+0

也许这是谷歌的API缓慢。你能用JavaScript来做到吗?这将有助于页面加载时间 – 2014-11-21 09:43:33

+0

页面主要是图片,所以即使我以后使用JavaScript加载图片中的图片仍然无法使用。 – joshhunt 2014-11-21 09:47:12

+0

谷歌api告诉你一些关于慢度? – 2014-11-21 09:47:42

回答

2

正如保罗&斯图尔特建议我通过创建谷歌Cloud SQL的一个表,我可以存储网址解决了这个问题,从谷歌云存储恢复,这样我也没必须重复请求网址。

代码示例

// Cloud Storage URL function 
function cloudStorageUrl($url, $size, $crop) { 
    if (file_exists($url)) { 
     $object_image_url = CloudStorageTools::getImageServingUrl($object_image_file, ['size' => $size, 'crop' => $crop]); 
     return $object_image_url; 
    } else { 
     return 'none'; 
    } 
} 

// Connect to database 
$db = new pdo('mysql:unix_socket=/cloudsql/<your-project-id>:<your-instance-name>;dbname=guestbook', 'root', ''); 

foreach($db->query('SELECT * FROM `images` WHERE `id`="'.$id.'"') as $row) { 
    // Check if Cloud Storage URL already exists 
    if ($row['url'] && $row['url'] !== 'none') { 
     $url = $row['url']; 
    } else { 
     // Get the Cloud Storage URL and save it 
     $url = cloudStorageUrl($row['cloud_storage_location'], 400, false); 
     $stmt = $db->prepare('INSERT INTO `images` (id, url) VALUES (:id, :url ON DUPLICATE KEY UPDATE url=VALUES(url))'); 
     $stmt->execute(array(':id' => intval($id), ':url' => htmlspecialchars($url))); 
    } 
}