Wpis z mikrobloga

#nodejs #programowanie

Probuje ogarnac dlaczego appka mi tyle ramu zuzywa, tyle ile jej dam, tyle zapelni

serwer expressa odbiera get requesty, wybiera stamtad link do obrazka, nastepnie robi http request do adresu obrazka, pipe'uje w srodku promise ktory modyfikuje obrazek i zwraca http response z tym obrazkiem

biblioteki: request,js, sharp.js, express.js

app.get('/resize', function (httpRequest, httpResponse) {
request
.get(url)
.on('error', () => {
httpResponse.send('There was an error with downloading an image');
})
.pipe(resizedImage)
.pipe(httpResponse)
}

funkcja resizedImage to wynik wywolywania sharp na bufferze (obrazek), ktora rowniez zwraca buffer (zmodyfikowany obrazek)

wszystkie zmienne zadeklarowalem przed app.get, a wiec kazdy request powinien czyscic poprzednio zachowane dane

let resizedImage, output...

app.get(...() => {
resizedImage = resize...
})

resize(buffer) {
output = sharp(buffer)
return output;
}

myslalem nad uzyciem global.gc(); ale nie bardzo wiem jak to wcisnac w te pipe, musialbym zrobic cos w stylu - jezeli serwer wyslal response, wyczysc zmienne, global.gc()

czy po prostu nie bawic sie w czysczenie pamieci, ograniczyc aplikacji np 500mb i jak trzeba bedzie to samo sie wyczysci? tylko wtedy nie wplynie to negatywnie na wydajnosc aplikacji?
  • 8