Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Ваш бэкенд Firebase App Hosting может подключаться к сети виртуального частного облака (VPC) . Это позволяет вашему бэкенду Firebase App Hosting получать доступ к бэкенд-сервисам, недоступным по публичным IP-адресам, таким как Cloud SQL, Spanner, Cloud Memorystore, Compute Engine или внутренние микросервисы Kubernetes.
Доступ к VPC возможен только во время выполнения (из контейнера Cloud Run ), а не во время сборки ( Cloud Build ).
Выберите способ подключения к сети VPC
Прямой выход VPC : проще, быстрее и дешевле. Использует один IP-адрес на контейнер. Рекомендуется для большинства случаев использования.
Serverless Connectors : объединяет IP-адреса для крупных приложений. Требуется оплата базовой виртуальной машины. Подробнее см. в разделе «Доступ к Serverless VPC» на странице цен на VPC .
Настроить в apphosting.yaml
Для настройки доступа используйте сопоставление vpcAccess в файле apphosting.yaml . Используйте либо полное имя сети/коннектора, либо идентификатор. Использование идентификаторов обеспечивает переносимость между тестовой и рабочей средами с различными коннекторами/сетями.
Конфигурация прямого выхода VPC ( apphosting.yaml ):
runConfig:vpcAccess:egress:PRIVATE_RANGES_ONLY# Default valuenetworkInterfaces:# Specify at least one of network and/or subnetwork-network:my-network-idsubnetwork:my-subnetwork-id
Пример: подключение к Memorystore для Redis из приложения Next.js
Системы кэширования, такие как Redis или Memcached, обычно используются для создания быстрого уровня кэширования данных в приложении. В этом примере показано, как настроить Memorystore для Redis в том же проекте Google Cloud , что и ваш бэкенд Firebase App Hosting , и подключиться к нему с помощью Direct VPC egress .
Шаг 0: Создайте хранилище памяти для экземпляра Redis
Убедитесь, что выбран тот же проект, который вы используете для Firebase App Hosting .
Если вы не можете получить доступ к этой странице, убедитесь, что для вашего проекта включена функция выставления счетов и что вы включили API Memorystore .
Выберите Создать экземпляр .
Настройте новый экземпляр, используя желаемые параметры. Вот несколько примеров значений, которые вы можете использовать:
Введите my-redis-cache в поле Instance ID .
Введите Redis cache в поле Отображаемое имя .
Выберите «Базовый» в селекторе уровней. Базовый уровень означает автономный узел Redis, в отличие от стандартного уровня, который использует узел-реплику для резервного копирования данных.
Выберите регион вашего сервера App Hosting в поле «Регион» . Убедитесь, что это значение соответствует региону вашего сервера.
Выберите любую зону из селектора.
В поле «Ёмкость» введите значение 5 Это установит ёмкость вашего экземпляра в 5 ГБ.
В разделе «Версия» выберите 5.0 (рекомендуется).
Выберите значение по умолчанию в селекторе авторизованных сетей .
Шаг 1: Обновите apphosting.yaml , указав идентификатор сети VPC.
Шаг 2: Добавьте переменные среды, которые направляют ваше приложение в Redis
Информацию о подключении (хост и порт) можно найти на вкладке «Подключения» вашего экземпляра Memorystore для Redis в консоли Google Cloud .
Подключитесь к Redis с помощью переменных окружения REDISPORT и REDISHOST . Задайте их в apphosting.yaml , используя значения хоста и порта из консоли Google Cloud :
env:# Sample only. Use actual values provided by Memorystore-variable:REDISPORTvalue:6379-variable:REDISHOSTvalue:10.127.16.3
Доступ к кэшу Redis из вашего кода. Используйте переменные окружения, настроенные на предыдущем шаге. Например, вот как можно читать данные из кэша в обработчике маршрутов Next.js:
src/lib/redis.js
import{createClient}from"redis";// Set these environment variables in apphosting.yamlconstREDISHOST=process.env.REDISHOST;constREDISPORT=process.env.REDISPORT;letredisClient;exportasyncfunctiongetClient(req,res){// Only connect if a connection isn't already availableif(!redisClient){redisClient=awaitcreateClient(REDISPORT,REDISHOST).on("error",(err)=>console.error("Redis Client Error",err)).connect();}returnredisClient;}
Шаг 4 (необязательно): настройте приложение для локальной разработки.
Эмулятор Firebase App Hosting может переопределять значения с помощью apphosting.emulator.yaml . Здесь вы можете изменить значение REDISHOST так, чтобы оно указывало на локальный хост, что позволит вести локальную разработку с использованием локально установленной версии Redis.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-08-30 UTC."],[],[],null,["\u003cbr /\u003e\n\nYour Firebase App Hosting backend can connect to a [Virtual Private Cloud\n(VPC)](https://cloud.google.com/vpc/docs) network. This allows your\nFirebase App Hosting backend to access backend services not accessible using\npublic IP addresses, such as Cloud SQL, Spanner, Cloud Memorystore,\nCompute Engine, or Kubernetes internal microservices.\n\nVPC access is only available at runtime (from your Cloud Run\ncontainer), not at build time (Cloud Build).\n\nChoose how to connect to a VPC network\n\n- [Direct VPC\n Egress](https://cloud.google.com/run/docs/configuring/vpc-direct-vpc): Simpler, faster, and less expensive. Uses one IP address per container. Recommended for most use cases.\n- [Serverless\n Connectors](https://cloud.google.com/vpc/docs/serverless-vpc-access): Pools IP addresses for larger applications. Requires payment for the underlying VM. See \"Serverless VPC Access\" in the [VPC pricing page](https://cloud.google.com/vpc/network-pricing) for pricing details.\n\nConfigure in `apphosting.yaml`\n\nUse the `vpcAccess` mapping in your `apphosting.yaml` file to configure access.\nUse either a fully qualified network/connector name or an ID. Using IDs allows\nfor portability between staging and production environments with different\nconnectors/networks.\n\nDirect VPC Egress Configuration (`apphosting.yaml`): \n\n runConfig:\n vpcAccess:\n egress: PRIVATE_RANGES_ONLY # Default value\n networkInterfaces:\n # Specify at least one of network and/or subnetwork\n - network: my-network-id\n subnetwork: my-subnetwork-id\n\nServerless Connector Configuration (`apphosting.yaml`): \n\n runConfig:\n vpcAccess:\n egress: ALL_TRAFFIC\n connector: connector-id\n\nExample: connect to Memorystore for Redis from a Next.js app\n\nCaching systems like Redis or Memcached are commonly used to build a fast data\ncaching layer for an app. This example shows you how to set up\n[Memorystore for Redis](https://cloud.google.com/memorystore/docs/redis/memorystore-for-redis-overview)\nin the same Google Cloud project as your Firebase App Hosting backend and\nconnect to it using\n[Direct VPC egress](https://cloud.google.com/run/docs/configuring/vpc-direct-vpc).\n\nStep 0: Create a Memorystore for Redis instance **Note:** you may also be prompted to create a [service connection policy](https://cloud.google.com/vpc/docs/about-service-connection-policies) as part of this setup.\n\n1. Go to the [*Memorystore for Redis* page](https://console.cloud.google.com/memorystore/redis/instances) in the Google Cloud console.\n - Make sure the same project you're using for Firebase App Hosting is selected.\n - If you can't access this page, make sure billing is enabled for your project and that you've enabled the [Memorystore API](https://console.cloud.google.com/apis/dashboard).\n2. Select **Create Instance**.\n3. Configure the new instance with your preferred settings. Here are some example values you can use:\n - Enter `my-redis-cache` under **Instance ID**.\n - Enter `Redis cache` under **Display name**.\n - Choose **Basic** under the tier selector. Basic tier designates a standalone Redis node, as opposed to standard tier, which uses a replica node to backup your data.\n - Choose your App Hosting backend's region from the **Region** selector. **Be sure to set this value to match the region of your backend.**\n - Choose **any** from the zone selector.\n - Enter `5` under **Capacity**. This sets your instance capacity to 5 GB.\n - Select `5.0` under **Version** (recommended).\n - Choose **default** from the **Authorized network** selector.\n\nStep 1: Update `apphosting.yaml` with your VPC network ID\n\n1. Visit the [VPC networks page](/docs/app-hosting/console.cloud.google.com/networking/networks/list) in the Google Cloud console.\n2. Find the VPC network ID for your Memorystore for Redis instance (it will often be `default`).\n3. Set direct VPC egress configuration in `apphosting.yaml` using the VPC\n network ID:\n\n runConfig:\n vpcAccess:\n egress: PRIVATE_RANGES_ONLY # Default value\n networkInterfaces:\n - network: my-network-id\n\nStep 2: Add environment variables that direct your app to Redis\n\n1. Find connection information (host and port) in the \"Connections\" tab of your Memorystore for Redis instance in the Google Cloud console.\n2. Connect to Redis with `REDISPORT` and `REDISHOST` environment variables. Set\n these in `apphosting.yaml` using the host and port values from the\n Google Cloud console:\n\n env:\n # Sample only. Use actual values provided by Memorystore\n - variable: REDISPORT\n value: 6379\n - variable: REDISHOST\n value: 10.127.16.3\n\nStep 3: Use redis from your app\n\n1. Install the [redis](https://www.npmjs.com/package/redis) npm package:\n\n `npm install redis@latest`\n2. Access your redis cache from your code. Use the environment variables\n configured in the previous step. For example, here's how you might read from\n a cache in a Next.js route handler:\n\n - `src/lib/redis.js`\n\n import { createClient } from \"redis\";\n\n // Set these environment variables in apphosting.yaml\n const REDISHOST = process.env.REDISHOST;\n const REDISPORT = process.env.REDISPORT;\n\n let redisClient;\n\n export async function getClient(req, res) {\n // Only connect if a connection isn't already available\n if (!redisClient) {\n redisClient = await createClient(REDISPORT, REDISHOST)\n .on(\"error\", (err) =\u003e console.error(\"Redis Client Error\", err))\n .connect();\n }\n\n return redisClient;\n }\n\n - `src/app/counter/route.js`\n\n import { getClient } from \"@/lib/redis.js\";\n\n export async function GET(request) {\n const redisClient = await getClient();\n const count = await redisClient.get(\"counter\");\n\n return Response.json({ count });\n }\n\n export async function POST(request) {\n const redisClient = await getClient();\n const count = await redisClient.incr(\"counter\");\n\n return Response.json({ count });\n }\n\nStep 4 (optional): Configure your app for local development\n\nThe Firebase App Hosting emulator can override values using\n`apphosting.emulator.yaml`. Here, you can change the value of `REDISHOST` to\npoint to the localhost so that you can develop locally using a local\ninstallation of Redis.\n\n1. [Install Redis on your local machine](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/)\n2. Create or edit `apphosting.emulators.yaml` to reference your local instance:\n\n env:\n - variable: REDISHOST\n value: 127.0.0.1"]]