Приложениям часто требуется обслуживать статические файлы, такие как JavaScript, изображения и CSS, в дополнение к обработке динамических запросов. Приложения в стандартной среде могут обслуживать статические файлы из варианта Google Cloud, такого как облачное хранилище, обслуживать их напрямую или использовать стороннюю сеть доставки контента (CDN). Размещение вашего статического сайта в Google Cloud может стоить меньше, чем при использовании традиционного хостинга. провайдер, так как Google Cloud предоставляет бесплатный уровень ## Обслуживание файлов из облачного хранилища Облачное хранилище может размещать статические ресурсы для динамических веб-приложений. Преимущества использования облачного хранилища вместо обслуживания непосредственно из вашего приложения включают в себя: - Облачное хранилище по сути работает как сеть доставки контента. Это не требует какой-либо специальной настройки, поскольку по умолчанию любой доступный для чтения объект кэшируется в глобальной сети Cloud Storage. - Нагрузка вашего приложения будет снижена за счет переноса обслуживания статических ресурсов в облачное хранилище. В зависимости от того, сколько у вас статических ресурсов и частоты доступа, это может значительно снизить стоимость запуска вашего приложения. - Плата за пропускную способность для доступа к контенту часто может быть меньше с облачным хранилищем. Вы можете загрузить свои активы в облачное хранилище с помощью инструмент командной строки gsutil или API облачного хранилища Библиотека облачных клиентов Google предоставляет идиоматический клиент Go 1.11 для облачного хранилища для хранения и извлечения данных с помощью облачного хранилища в приложении App Engine. Пример обслуживания из корзины Cloud Storage Этот простой пример создает корзину облачного хранилища и загружает статические ресурсы с помощью Google Cloud CLI: Создайте ведро. Обычно, но не обязательно, имя корзины соответствует идентификатору вашего проекта. Имя корзины должно быть глобально уникальным. gsutil mb gsyour-bucket-name>Настройте ACL, чтобы предоставить доступ для чтения к элементам в корзине. gsutil defacl установить общедоступное имя gsyour-bucket-name>Загрузить элементы в корзину. Команда rsync, как правило, является самым быстрым и простым способом загрузки и обновления ресурсов. Вы также можете использовать ср gsutil -m rsync -r ./static gsyour-bucket-name>/static Теперь вы можете получить доступ к своим статическим активам через httpsstorage.googleapis.com//static For more details on how to use Cloud Storage to serve static assets, including how to serve from a custom domain name, refer to How to Host a Static Website Serving files from other Google Cloud services You also have the option of using Cloud CDN or other Google Cloud storage services ## Serving files directly from your app To serve static files for Go 1.11 in the standard environment, you define the handlers in your app.yaml file using either the static_dir or static_files elements The content in the static files or static directories are unaffected by the scaling settings in your app.yaml file. Requests to static files or static directories are handled by the App Engine infrastructure directly, and do not reach the language runtime of the application Configuring your static file handlers To configure your app to serve the ./public directory from the /static URL, you define a handler in your app.yaml file The following demonstrates how to serve the static files of a sample app's ./public directory. The template for this app's index.html page instructs the browser to load the main.css file, for example: /css/main.css"> The ./public directory is defined in the static_dir element of the project's app.yaml file: handlers: - url: /favicon\.ico static_files: favicon.ico upload: favicon\.ico - url: /static static_dir: public - url:secure: always redirect_http_response_code: 301 script: auto The handlers section in the above example handles three URL patterns: The /favicon.icohandler maps a request specifically for /favicon.icoto a file named favicon.icoin the app's root directory The /statichandler maps requests for URLs that start with /static. When App Engine receives a request for a URL beginning with /static, it maps the remainder of the path to files in the ./publicdirectory. If an appropriate file is found in the directory, the contents of that file are returned to the client The handler matches all other URLs and directs them to your app URL path patterns are tested in the order they appear in app.yaml, therefore the pattern for your static files should be defined before the pattern For more information, see the app.yaml reference ## Serving from a third-party content delivery network You can use any external third-party CDN to serve your static files and cache dynamic requests but your app might experience increased latency and cost For improved performance, you should use a third-party CDN that supports CDN Interconnect.