なぜか知らないが、vue.jsでGoogle Cloud Storageの画像を読み出すと、
ところどころ真っ白になったり読み出せなかったりする。
理由は不明。
まぁ、キャッシュかなと考えているので
Google Cloud Storage の デフォルト 3600秒の画像のキャッシュを伸ばす。
アップロード時にオプション設定してもうまくいかないので、
アップロード後に変更する
hoge.php
$img = public_path($file);
$object = $bucket->upload(
fopen($img, 'r')
);
$object->update([
'cacheControl' => 'public, max-age=2592000'
]);
こんな感じ。
とりあえず、すでにあるファイルを変更する場合は以下。
hoge.php
$storage = new StorageClient([
'projectId' => config('app.gcp_project_id'),
'keyFile' => json_decode(file_get_contents(config_path('gcp.json')), true)
]);
$bucket = $storage->bucket(config('app.gcp_bucket_name'));
$objectName = "menuphoto-300x300-10.jpg";
$object = $bucket->object($objectName);
$object->update([
'cacheControl' => 'public, max-age=22220'
]);
$object = $bucket->object(
$objectName
);
$info = $object->info();
var_dump($info);
こんな感じ。
おまけ
オブジェクト一覧を取得
hoge.php
// オブジェクト一覧を取得
foreach ($bucket->objects() as $object) {
echo $object->name()."<br>";
}
参考
https://blog.leko.jp/post/how-to-customize-cache-settings-of-google-cloud-storage/
一括変更はこちら
https://yamavlog.com/modify-gcs-cache-time-on-eage-cache/