Существует ли функциональная разница или производительность между этими двумя методами обработки маршрутов API в безсерверном режиме.Это то же самое, что и то, как будет использоваться кеширование памяти и контейнера?
- Все маршруты идут к одному и тому же обработчику, который затем перенаправляет их внутрь
serverless.yml
functions:
api:
handler: lambda.handler
events:
- http: ANY /foo
- http: ANY /home
handler.js
exports.router = async (event, context) => {
const { path } = event
switch (path) {
case '/foo':
return require('./handlers/foo')(event, context)
case '/home':
return require('./handlers/home')(event, context)
}
}
handlers / foo.js
module.exports = async (event, context) => {
...
};
handlers / home.js
module.exports = async (event, context) => {
...
};
Назначение разных обработчиков для маршрута в serverless.yml
serverless.yml
functions:
apifoo:
handler: handler.foo
events:
- http: ANY /foo
apihome:
handler: handler.home
events:
- http: ANY /home
handler.js
export const foo = async (event, context) => {
...
};
export const home = async (event, context) => {
...
};
Возможно, они будут обрабатыватьтак же?Сейчас я использую метод 1, но хочу убедиться, что я настолько эффективен, насколько это возможно.Я понимаю, что aws будет перезагружать лямбду при каждом запросе, но будет поддерживать код, запускаемый вне самой лямбды, немного любопытно, если есть лучшая настройка из двух.