Siqish
Siqish javob bodysining hajmini sezilarli kamaytirishi mumkin, shu orqali web ilovaning tezligini oshiradi.
Siqish javob bodysining hajmini sezilarli kamaytirishi mumkin, shu orqali web ilovaning tezligini oshiradi.
Productiondagi high-traffic saytlarda siqishni ilova serveridan tashqariga chiqarish qat'iy tavsiya etiladi - odatda reverse proxyda (masalan, Nginx). Bunday holatda siqish middleware'idan foydalanmaslik kerak.
Express bilan foydalanish (default)
Gzip siqishni yoqish uchun compression middleware paketidan foydalaning.
Avval kerakli paketlarni o'rnating:
1$ npm i --save compression
2$ npm i --save-dev @types/compressionO'rnatish tugagach, siqish middleware'ini global middleware sifatida qo'llang.
1import * as compression from 'compression';
2// somewhere in your initialization file
3app.use(compression());Fastify bilan foydalanish
Agar FastifyAdapter dan foydalansangiz, fastify-compress kerak bo'ladi:
1$ npm i --save @fastify/compressO'rnatish tugagach, @fastify/compress middleware'ini global middleware sifatida qo'llang.
Ilovani yaratishda NestFastifyApplication tipidan foydalanayotganingizga ishonch hosil qiling. Aks holda, siqish middleware'ini qo'llash uchun register dan foydalana olmaysiz.
1import { FastifyAdapter, NestFastifyApplication } from '@nestjs/platform-fastify';
2
3import compression from '@fastify/compress';
4
5// inside bootstrap()
6const app = await NestFactory.create<NestFastifyApplication>(AppModule, new FastifyAdapter());
7await app.register(compression);Standart holatda @fastify/compress brauzerlar encoding qo'llab-quvvatlashini bildirganda Brotli siqishni (Node >= 11.7.0 da) ishlatadi. Brotli siqish koeffitsienti bo'yicha juda samarali bo'lishi mumkin, biroq u anchagina sekin ham bo'lishi mumkin. Standard holatda Brotli maksimal siqish sifati 11 ga o'rnatiladi, lekin BROTLI_PARAM_QUALITY ni 0 (min) dan 11 (max) gacha sozlab, siqish vaqtini siqish sifati hisobiga kamaytirish mumkin. Bu joy/vaqt unumdorligini optimallashtirish uchun nozik sozlashni talab qiladi. Sifat 4 bo'lgan misol:
1import { constants } from 'node:zlib';
2// somewhere in your initialization file
3await app.register(compression, { brotliOptions: { params: { [constants.BROTLI_PARAM_QUALITY]: 4 } } });Soddalashtirish uchun fastify-compress ga javoblarni siqishda faqat deflate va gzip'dan foydalanishni ko'rsatishingiz mumkin; javoblar biroz kattaroq bo'ladi, ammo ancha tez yetkaziladi.
Encodinglarni ko'rsatish uchun app.register ga ikkinchi argument bering:
1await app.register(compression, { encodings: ['gzip', 'deflate'] });Yuqoridagi misol fastify-compress ga faqat gzip va deflate encodinglaridan foydalanishni va mijoz ikkalasini ham qo'llab-quvvatlasa, gzipni afzal ko'rishni bildiradi.