Облачные функции (Firebase) - уменьшить время холодного запуска за счет частичной загрузки модулей Firebase? - PullRequest
0 голосов
/ 01 сентября 2018

Документы Firebase рекомендуют разумно управлять зависимостями в качестве одного из первых способов уменьшить время холодного запуска: https://firebase.google.com/docs/functions/tips#use_dependencies_wisely

Для большинства функций Firebase вы, вероятно, будете использовать модули firebase-functions и firebase-admin.

Вот практический пример функции:

const functions = require('firebase-functions');
const admin = require('firebase-admin');

// Initialize the app in admin sdk
admin.initializeApp();

// Firestore timestamp support
admin.firestore().settings({timestampsInSnapshots: true});

exports.simpleFunction = functions.https.onCall((data, context) => {
    return admin.auth().getUserByEmail(data.email)
        .catch(() => {
            return Promise.reject(new https.HttpsError('not-found', 'User not found.'));
        })
        .then(userRecord => {
            return admin.firestore().collection('user').doc(userRecord.uid).get();
        })
});

Время выполнения холодного запуска: Function execution took 7517 ms, finished with status code: 200 Время теплого исполнения: Function execution took 8 ms, finished with status code: 200

Тест этой функции, как показано, имеет время загрузки при холодном пуске ~ 7,5 секунд (хотя и замечательное время отклика теплого запуска). Хотя существует множество факторов, объясняющих, почему это может иметь место, одной из причин может быть загрузка всех зависимостей, требуемых firebase-functions и firebase-admin.

Учитывая, что пример функции использует только несколько методов в каждом пакете, возможно ли каким-то образом только загрузить эти методы и их зависимости, чтобы уменьшить время загрузки?

Я также пытался использовать машинопись и методы импорта напрямую в виде import {https} from 'firebase-functions' и import {initializeApp, firestore, auth} from 'firebase-admin', надеясь, что какой-то магический закулисный тряски деревьев, но оказывается, что машинопись в конце концов переносится в javascript .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...