{
    "componentChunkName": "component---src-templates-blog-post-jsx",
    "path": "/post/how-to-customize-cache-settings-of-google-cloud-storage/",
    "result": {"data":{"site":{"siteMetadata":{"title":"WEB EGG","author":"Leko - CTO at Yuimedi"}},"markdownRemark":{"id":"549bf932-4dd8-5636-8c32-a1d76510c912","excerpt":"この前公開した記事(Buildersconのセッションタイマーを作った)を実装する過程で、はじめてGoogle Cloud Storageを利用しました。 利用してみたところ、キャッシュ周りの設定を変更する方法がよく分からなかったので、備忘録を残します。 まえおき Google Cloud Storage…","html":"<p>この前公開した記事(<a href=\"/post/create-session-timer-of-builderscon/\">Buildersconのセッションタイマーを作った</a>)を実装する過程で、はじめて<a href=\"https://cloud.google.com/storage/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Google Cloud Storage</a>を利用しました。<br>\n利用してみたところ、キャッシュ周りの設定を変更する方法がよく分からなかったので、備忘録を残します。</p>\n<!--more-->\n<h2 id=\"まえおき\" style=\"position:relative;\"><a href=\"#%E3%81%BE%E3%81%88%E3%81%8A%E3%81%8D\" aria-label=\"まえおき permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>まえおき</h2>\n<p>Google Cloud StorageはブラウザからGUIで操作する方法と、<a href=\"https://cloud.google.com/sdk/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Google Cloud SDK</a>という公式のCLIツールを利用する方法があるようです。 今回は両方の方法でまとめてみます。</p>\n<p>※GCP自体はISUCONで使用したことがあるので、GCPことはじめ的なことは割愛します。<br>\nまた、GCSでバケット作成、ファイルアップロードなどのGCSことはじめも割愛します。</p>\n<h2 id=\"google-cloud-sdkのインストール\" style=\"position:relative;\"><a href=\"#google-cloud-sdk%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB\" aria-label=\"google cloud sdkのインストール permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Google Cloud SDKのインストール</h2>\n<p><a href=\"https://cloud.google.com/sdk/docs/#install_the_latest_version_cloudsdk_current_version\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">公式</a>にインストールガイドがあるのですが、<del>面倒なので</del>インストールはHomebrew-caskでやってしまいます。</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">brew cask <span class=\"token function\">install</span> google-cloud-sdk</code></pre></div>\n<p>インストールできたか動作確認。</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">gsutil</code></pre></div>\n<p>ヘルプが表示されていればOKだと思います。</p>\n<h2 id=\"メタデータの確認\" style=\"position:relative;\"><a href=\"#%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E7%A2%BA%E8%AA%8D\" aria-label=\"メタデータの確認 permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>メタデータの確認</h2>\n<p>キャッシュの情報はメタデータと呼ばれるオブジェクトに格納されています。<br>\nデフォルトでは<code>Cache-Control: public, max-age=3600</code>となっているようです。</p>\n<p>開発途中に1時間もキャッシュが効いてしまうのは辛いので、もうちょっと短くしたい。</p>\n<h3 id=\"guiで見る\" style=\"position:relative;\"><a href=\"#gui%E3%81%A7%E8%A6%8B%E3%82%8B\" aria-label=\"guiで見る permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>GUIで見る</h3>\n<p>ファイル一覧の各ファイルの右端にメニューが有ります。</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 668px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/1075e8db9d6e8c3136d52d206f82187e/54bf4/9899cad30c9613f429309d9242dc9746.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 22.155688622754493%; position: relative; bottom: 0; left: 0; background-image: url('data:image/svg+xml,%3csvg%20xmlns=\\'http://www.w3.org/2000/svg\\'%20width=\\'400\\'%20height=\\'90\\'%20viewBox=\\'0%200%20400%2090\\'%20preserveAspectRatio=\\'none\\'/%3e'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/1075e8db9d6e8c3136d52d206f82187e/5251b/9899cad30c9613f429309d9242dc9746.webp 167w,\n/static/1075e8db9d6e8c3136d52d206f82187e/7390e/9899cad30c9613f429309d9242dc9746.webp 334w,\n/static/1075e8db9d6e8c3136d52d206f82187e/7c056/9899cad30c9613f429309d9242dc9746.webp 668w,\n/static/1075e8db9d6e8c3136d52d206f82187e/0a92e/9899cad30c9613f429309d9242dc9746.webp 1002w,\n/static/1075e8db9d6e8c3136d52d206f82187e/aa5f8/9899cad30c9613f429309d9242dc9746.webp 1007w\"\n              sizes=\"(max-width: 668px) 100vw, 668px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/1075e8db9d6e8c3136d52d206f82187e/21521/9899cad30c9613f429309d9242dc9746.png 167w,\n/static/1075e8db9d6e8c3136d52d206f82187e/86d36/9899cad30c9613f429309d9242dc9746.png 334w,\n/static/1075e8db9d6e8c3136d52d206f82187e/74866/9899cad30c9613f429309d9242dc9746.png 668w,\n/static/1075e8db9d6e8c3136d52d206f82187e/d69c4/9899cad30c9613f429309d9242dc9746.png 1002w,\n/static/1075e8db9d6e8c3136d52d206f82187e/54bf4/9899cad30c9613f429309d9242dc9746.png 1007w\"\n            sizes=\"(max-width: 668px) 100vw, 668px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/1075e8db9d6e8c3136d52d206f82187e/74866/9899cad30c9613f429309d9242dc9746.png\"\n            alt=\"スクリーンショッ\"\n            title=\"スクリーンショッ\"\n            loading=\"lazy\"\n            decoding=\"async\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p><strong>Edit metadata</strong> を選択すると、メタデータの詳細が表示/編集されます。</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 499px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/18789f316e9d7f8256deeb917212029d/119c7/7aae685d0e8c76f43a6bc656c884f942.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 89.82035928143713%; position: relative; bottom: 0; left: 0; background-image: url('data:image/svg+xml,%3csvg%20xmlns=\\'http://www.w3.org/2000/svg\\'%20width=\\'400\\'%20height=\\'358\\'%20viewBox=\\'0%200%20400%20358\\'%20preserveAspectRatio=\\'none\\'%3e%3cpath%20d=\\'M76%2028h-3l-3%201c-1%202-1%202-2%201%200-1-1-2-4-2-4%200-4%200-4%204%200%203%200%203%201%201%200-3%202-4%202-1l1%202%201-2%201-2%201%202%201%202%201-1h1c1%202%202%202%204%202%201-1%201-1-1-2s-2-1%200-1l2-2c1-1%201-1%201%201%200%203%202%205%203%203h1c2%201%205%200%205-2s-1-4-3-4-3%202-1%202l-1%202c-2%201-2%201-2-2%201-2-1-4-2-2M24%20285v10l1-10v-9h325v18H187l-162%201h326v-20H24v10m0%2040v10h40v-21H24v11\\'%20fill=\\'%23d3d3d3\\'%20fill-rule=\\'evenodd\\'/%3e%3c/svg%3e'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/18789f316e9d7f8256deeb917212029d/5251b/7aae685d0e8c76f43a6bc656c884f942.webp 167w,\n/static/18789f316e9d7f8256deeb917212029d/7390e/7aae685d0e8c76f43a6bc656c884f942.webp 334w,\n/static/18789f316e9d7f8256deeb917212029d/f002d/7aae685d0e8c76f43a6bc656c884f942.webp 499w\"\n              sizes=\"(max-width: 499px) 100vw, 499px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/18789f316e9d7f8256deeb917212029d/21521/7aae685d0e8c76f43a6bc656c884f942.png 167w,\n/static/18789f316e9d7f8256deeb917212029d/86d36/7aae685d0e8c76f43a6bc656c884f942.png 334w,\n/static/18789f316e9d7f8256deeb917212029d/119c7/7aae685d0e8c76f43a6bc656c884f942.png 499w\"\n            sizes=\"(max-width: 499px) 100vw, 499px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/18789f316e9d7f8256deeb917212029d/119c7/7aae685d0e8c76f43a6bc656c884f942.png\"\n            alt=\"スクリーンショッ\"\n            title=\"スクリーンショッ\"\n            loading=\"lazy\"\n            decoding=\"async\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<h3 id=\"google-cloud-sdkで見る\" style=\"position:relative;\"><a href=\"#google-cloud-sdk%E3%81%A7%E8%A6%8B%E3%82%8B\" aria-label=\"google cloud sdkで見る permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Google Cloud SDKで見る</h3>\n<p>コマンドの場合は、<code>gsutil ls -L {URL}</code>で確認できるようです。</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">$ gsutil <span class=\"token function\">ls</span> -L gs://web.timer.builderscon.io/all.css\ngs://web.timer.builderscon.io/all.css:\n    Creation time:      Mon, <span class=\"token number\">27</span> Jun <span class=\"token number\">2016</span> 00:02:53 GMT\n    Cache-Control:      public, max-age<span class=\"token operator\">=</span><span class=\"token number\">300</span>\n    Content-Length:     <span class=\"token number\">2225</span>\n    Content-Type:       text/css\n    Hash <span class=\"token punctuation\">(</span>crc32c<span class=\"token punctuation\">)</span>:      <span class=\"token assign-left variable\">TTdzRQ</span><span class=\"token operator\">==</span>\n    Hash <span class=\"token punctuation\">(</span>md5<span class=\"token punctuation\">)</span>:     BHMNh5agX0rW+VxFUeO4vA<span class=\"token operator\">==</span>\n    ETag:           <span class=\"token assign-left variable\">CKfap76gw80CEAQ</span><span class=\"token operator\">=</span>\n    Generation:     <span class=\"token number\">1466860311276839</span>\n    Metageneration:     <span class=\"token number\">4</span>\n    ACL:            ACCESS DENIED. Note: you need OWNER permission\n                on the object to <span class=\"token builtin class-name\">read</span> its ACL.\nTOTAL: <span class=\"token number\">1</span> objects, <span class=\"token number\">2225</span> bytes <span class=\"token punctuation\">(</span><span class=\"token number\">2.17</span> KiB<span class=\"token punctuation\">)</span></code></pre></div>\n<h3 id=\"httpでアクセスしてみる\" style=\"position:relative;\"><a href=\"#http%E3%81%A7%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B\" aria-label=\"httpでアクセスしてみる permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>httpでアクセスしてみる</h3>\n<p>curlからファイルにアクセスし、レスポンスヘッダを見てみます。</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">$ <span class=\"token function\">curl</span> -v http://web.timer.builderscon.io/all.css <span class=\"token operator\">|</span> <span class=\"token function\">grep</span> -i cache\n*   Trying <span class=\"token number\">172.217</span>.25.112<span class=\"token punctuation\">..</span>.\n* Connected to web.timer.builderscon.io <span class=\"token punctuation\">(</span><span class=\"token number\">172.217</span>.25.112<span class=\"token punctuation\">)</span> port <span class=\"token number\">80</span> <span class=\"token punctuation\">(</span><span class=\"token comment\">#0)</span>\n<span class=\"token operator\">></span> GET /all.css HTTP/1.1\n<span class=\"token operator\">></span> Host: web.timer.builderscon.io\n<span class=\"token operator\">></span> User-Agent: curl/7.43.0\n<span class=\"token operator\">></span> Accept: */*\n<span class=\"token operator\">></span>\n<span class=\"token operator\">&lt;</span> HTTP/1.1 <span class=\"token number\">200</span> OK\n<span class=\"token operator\">&lt;</span> X-GUploader-UploadID: AEnB2Uo-VyZzLzndQK4fCwxFlWUnnbZJX36oxapS-DRXklr34ke74Liu8A8_uDWimrSzjS3hWoVpUh318hW9MVFQacQrjl_ozA\n<span class=\"token operator\">&lt;</span> Date: Wed, 06 Jul <span class=\"token number\">2016</span> 01:56:29 GMT\n<span class=\"token operator\">&lt;</span> Cache-Control: public, max-age<span class=\"token operator\">=</span><span class=\"token number\">300</span>\n<span class=\"token operator\">&lt;</span> Expires: Wed, 06 Jul <span class=\"token number\">2016</span> 02:01:29 GMT\n<span class=\"token operator\">&lt;</span> Last-Modified: Sat, <span class=\"token number\">25</span> Jun <span class=\"token number\">2016</span> <span class=\"token number\">13</span>:11:51 GMT\n<span class=\"token operator\">&lt;</span> ETag: <span class=\"token string\">\"04730d8796a05f4ad6f95c4551e3b8bc\"</span>\n<span class=\"token operator\">&lt;</span> x-goog-generation: <span class=\"token number\">1466860311276839</span>\n<span class=\"token operator\">&lt;</span> x-goog-metageneration: <span class=\"token number\">4</span>\n<span class=\"token operator\">&lt;</span> x-goog-stored-content-encoding: identity\n<span class=\"token operator\">&lt;</span> x-goog-stored-content-length: <span class=\"token number\">2225</span>\n<span class=\"token operator\">&lt;</span> Content-Type: text/css\n<span class=\"token operator\">&lt;</span> x-goog-hash: <span class=\"token assign-left variable\">crc32c</span><span class=\"token operator\">=</span>TTdzRQ<span class=\"token operator\">==</span>\n<span class=\"token operator\">&lt;</span> x-goog-hash: <span class=\"token assign-left variable\">md5</span><span class=\"token operator\">=</span>BHMNh5agX0rW+VxFUeO4vA<span class=\"token operator\">==</span>\n<span class=\"token operator\">&lt;</span> x-goog-storage-class: STANDARD\n<span class=\"token operator\">&lt;</span> Accept-Ranges: bytes\n<span class=\"token operator\">&lt;</span> Content-Length: <span class=\"token number\">2225</span>\n<span class=\"token operator\">&lt;</span> Server: UploadServer\n\n<span class=\"token punctuation\">..</span>.</code></pre></div>\n<p>このように、メタデータ内のキャッシュの項目がレスポンスヘッダに含まれています。</p>\n<h2 id=\"キャッシュの有効期限を変更してみる\" style=\"position:relative;\"><a href=\"#%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%81%AE%E6%9C%89%E5%8A%B9%E6%9C%9F%E9%99%90%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B\" aria-label=\"キャッシュの有効期限を変更してみる permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>キャッシュの有効期限を変更してみる</h2>\n<h3 id=\"guiから変更する\" style=\"position:relative;\"><a href=\"#gui%E3%81%8B%E3%82%89%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B\" aria-label=\"guiから変更する permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>GUIから変更する</h3>\n<p>Edit metadataからキャッシュの情報を書き換えられます。</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 496px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/648dcff0f6fe0d5429cd95eae8ff4ac1/bb630/2dfe421c7eaddb77926bbd551fc9b938.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 90.4191616766467%; position: relative; bottom: 0; left: 0; background-image: url('data:image/svg+xml,%3csvg%20xmlns=\\'http://www.w3.org/2000/svg\\'%20width=\\'400\\'%20height=\\'360\\'%20viewBox=\\'0%200%20400%20360\\'%20preserveAspectRatio=\\'none\\'%3e%3cpath%20d=\\'M206%20252l-2%204c-1%202-1%202-1%200%200-3-1-4-2-2h-1l-2-1c-2%200-2%201-2%204s0%204%201%203l2-1%201-1h12l1-1%201-3v2c0%205%202%203%202-1%200-3%200-4-1-3-1%202-1%202-1%200-1-1-1-1-2%201%200%202-1%202-3%200l-3-1M23%20276l-1%2010v10h329l-164-1H23v-18h327v9l1%2010v-20l-164-1-164%201m-1%2050v10h40v-21H22v11\\'%20fill=\\'%23d3d3d3\\'%20fill-rule=\\'evenodd\\'/%3e%3c/svg%3e'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/648dcff0f6fe0d5429cd95eae8ff4ac1/5251b/2dfe421c7eaddb77926bbd551fc9b938.webp 167w,\n/static/648dcff0f6fe0d5429cd95eae8ff4ac1/7390e/2dfe421c7eaddb77926bbd551fc9b938.webp 334w,\n/static/648dcff0f6fe0d5429cd95eae8ff4ac1/6f16c/2dfe421c7eaddb77926bbd551fc9b938.webp 496w\"\n              sizes=\"(max-width: 496px) 100vw, 496px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/648dcff0f6fe0d5429cd95eae8ff4ac1/21521/2dfe421c7eaddb77926bbd551fc9b938.png 167w,\n/static/648dcff0f6fe0d5429cd95eae8ff4ac1/86d36/2dfe421c7eaddb77926bbd551fc9b938.png 334w,\n/static/648dcff0f6fe0d5429cd95eae8ff4ac1/bb630/2dfe421c7eaddb77926bbd551fc9b938.png 496w\"\n            sizes=\"(max-width: 496px) 100vw, 496px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/648dcff0f6fe0d5429cd95eae8ff4ac1/bb630/2dfe421c7eaddb77926bbd551fc9b938.png\"\n            alt=\"スクリーンショッ\"\n            title=\"スクリーンショッ\"\n            loading=\"lazy\"\n            decoding=\"async\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>書き換えたらcurlでアクセス。</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">$ <span class=\"token function\">curl</span> -v http://web.timer.builderscon.io/all.css <span class=\"token operator\"><span class=\"token file-descriptor important\">2</span>></span><span class=\"token file-descriptor important\">&amp;1</span> <span class=\"token operator\">|</span> <span class=\"token function\">grep</span> -i cache\n<span class=\"token operator\">&lt;</span> Cache-Control: public, max-age<span class=\"token operator\">=</span><span class=\"token number\">30</span></code></pre></div>\n<p>意図したとおりになりました。</p>\n<h3 id=\"google-cloud-sdkから変更する\" style=\"position:relative;\"><a href=\"#google-cloud-sdk%E3%81%8B%E3%82%89%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B\" aria-label=\"google cloud sdkから変更する permalink\" class=\"autolink-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Google Cloud SDKから変更する</h3>\n<p>gsutilコマンドの場合は<code>setmeta</code>サブコマンドを使用します。</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">gsutil setmeta -h <span class=\"token string\">'Cache-Control:public, max-age=100'</span> gs://web.timer.builderscon.io/all.css\nSetting metadata on gs://web.timer.builderscon.io/all.css<span class=\"token punctuation\">..</span>.\nBadRequestException: <span class=\"token number\">400</span> Invalid argument.</code></pre></div>\n<p><strong>ん？</strong><br>\nよくよく考えたらログインしてないですね。プロジェクトのメンバーでないとファイルの変更ができないので、gcloudコマンドでログインします。</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">$ gcloud auth login\nYour browser has been opened to visit:\n\n    https://accounts.google.com/o/oauth2/auth?XXXXXXXXXXXXXXXX\n\nSaved Application Default Credentials.\n\nYou are now logged <span class=\"token keyword\">in</span> as <span class=\"token punctuation\">[</span>XXX.XXX@gmail.com<span class=\"token punctuation\">]</span>.\nYour current project is <span class=\"token punctuation\">[</span>None<span class=\"token punctuation\">]</span>.  You can change this setting by running:\n  $ gcloud config <span class=\"token builtin class-name\">set</span> project PROJECT_ID</code></pre></div>\n<p>ログインが完了したら、もう一度メタデータを更新。</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">$ gsutil setmeta -h <span class=\"token string\">'Cache-Control:public, max-age=100'</span> gs://web.timer.builderscon.io/all.css\nSetting metadata on gs://web.timer.builderscon.io/all.css<span class=\"token punctuation\">..</span>.</code></pre></div>\n<p>今度はうまくいったようです。書き換えたらcurlでアクセス。</p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">$ <span class=\"token function\">curl</span> -v http://web.timer.builderscon.io/all.css <span class=\"token operator\"><span class=\"token file-descriptor important\">2</span>></span><span class=\"token file-descriptor important\">&amp;1</span> <span class=\"token operator\">|</span> <span class=\"token function\">grep</span> -i cache\n<span class=\"token operator\">&lt;</span> Cache-Control: public, max-age<span class=\"token operator\">=</span><span class=\"token number\">100</span></code></pre></div>\n<p>意図したとおりになりました。</p>","timeToRead":6,"frontmatter":{"title":"Google Cloud Storageのキャッシュの設定を変更してみる","tags":null,"date":"July 06, 2016","featuredImage":null}}},"pageContext":{"slug":"/how-to-customize-cache-settings-of-google-cloud-storage/","previous":{"fields":{"slug":"/create-session-timer-of-builderscon/"},"frontmatter":{"title":"Buildersconのセッションタイマーを作った","tags":["Builderscon"]}},"next":{"fields":{"slug":"/learn-multi-thread-and-multiplexing/"},"frontmatter":{"title":"シングルスレッドな言語の並列化・マルチプロセス化についての暫定的な理解をまとめる","tags":["Nodejs","Performance","PHP"]}}}},
    "staticQueryHashes": ["2585454260","2954598359"]}