Skip to content

CDN Hosting at Google Cloud Storage

Peter Krautzberger edited this page Feb 21, 2014 · 34 revisions

Note: these are preliminary notes about using Google Cloud Storage as a CDN service

Preliminaries

Copying

Notes:

This also works within google storage, i.e., gsutil cp gs://bucket1/file1 gs://bucket2/

make bucket public

Notes:

set CORS

Notes:

create XML file with

<?xml version="1.0" encoding="UTF-8"?>
<CorsConfig>
  <Cors>
        <Origins>
            <Origin>*</Origin>
        </Origins>
        <Methods>
            <Method>GET</Method>
            <Method>POST</Method>
            <Method>HEAD</Method>
        </Methods>
        <ResponseHeaders>
            <ResponseHeader>*</ResponseHeader>
        </ResponseHeaders>
        <MaxAgeSec>86400</MaxAgeSec>
    </Cors>
</CorsConfig>

Save as cors.xml and run

gsutil cors set cors.xml gs://fonts.acmecompany.com/

mime-type headers

Notes:

  • https://developers.google.com/storage/docs/gsutil/commands/setmeta
  • the ** wildcard includes subdirectories, https://developers.google.com/storage/docs/gsutil/addlhelp/WildcardNames
  • EOT and SVG content-type headers are detected correctly during upload.
  • WOFF is set to the old mime type x-font/woff; that works but we decided to go with the future-proof * file bug report at Google?
  • For otf: gsutil setmeta -r -h "Content-Type:font/opentype" -h "Cache-Control:public, max-age=3600" -h "Content-Disposition" gs://mathjax-cdn/mathjax/2.3-latest/fonts/HTML-CSS/**.otf
  • For otf: gsutil setmeta -r -h "Content-Type:application/font-woff" -h "Cache-Control:public, max-age=3600" -h "Content-Disposition" gs://mathjax-cdn/mathjax/2.3-latest/fonts/HTML-CSS/**.woff

TODO

  • tests -- we don't actually have any tests that check the functionality of the CDN.
    • CORS
    • mimetype

Clone this wiki locally