Node.js sudah pun pantas kerana sifatnya yang dipacu peristiwa dan tak segerak. Walau bagaimanapun, hanya pantas tidak mencukupi dalam rangkaian moden. Jika anda akan menggunakan Node.js untuk membangunkan aplikasi web anda yang seterusnya, maka anda harus melakukan apa sahaja untuk menjadikan aplikasi anda lebih pantas, sangat pantas. Artikel ini akan memperkenalkan 10 petua yang diuji yang boleh meningkatkan aplikasi Node dengan sangat baik. Tanpa berlengah lagi, mari kita lihat satu persatu.
1. Selari
Apabila membuat aplikasi web, anda mungkin perlu memanggil API dalaman beberapa kali untuk mendapatkan pelbagai data. Sebagai contoh, katakan pada halaman Papan Pemuka, anda ingin melaksanakan panggilan berikut:
Maklumat pengguna -getUserProfile().
Aktiviti semasa -getRecentActivity().
Kandungan langganan -getSubscriptions().
Kandungan pemberitahuan -getNotifications().
Untuk mendapatkan maklumat ini, anda akan membuat perisian tengah yang berasingan untuk setiap kaedah dan kemudian memautkannya ke laluan Papan Pemuka. Tetapi masalahnya ialah pelaksanaan kaedah ini adalah linear, dan yang seterusnya tidak akan bermula sehingga yang sebelumnya berakhir. Penyelesaian yang mungkin adalah dengan memanggilnya secara selari.
Seperti yang anda tahu Node.js sangat pandai memanggil pelbagai kaedah secara selari kerana ketidaksegerakan. Kita tidak boleh membazirkan sumber kita. Kaedah yang saya nyatakan di atas tidak mempunyai kebergantungan supaya kita boleh melaksanakannya secara selari. Dengan cara ini kita boleh mengurangkan jumlah perisian tengah dan meningkatkan kelajuan dengan banyak.
Kami boleh menggunakan async.js untuk mengendalikan paralelisme, iaitu modul Nod yang digunakan khas untuk menala JavaScript secara tidak segerak. Kod berikut menunjukkan cara menggunakan async.js untuk memanggil berbilang kaedah secara selari:
2. Tak segerak
Node.js adalah satu-benang mengikut reka bentuk. Berdasarkan ini, kod segerak boleh menyumbat keseluruhan aplikasi. Sebagai contoh, kebanyakan API sistem fail mempunyai versi segeraknya. Kod berikut menunjukkan kedua-dua operasi segerak dan tak segerak bagi membaca fail:
// Segerak
kandungan var = fs.readFileSync('file.txt').toString();
3. Cache
Jika anda menggunakan beberapa data yang tidak kerap berubah, anda harus cache untuk meningkatkan prestasi. Contohnya, kod berikut ialah contoh mendapatkan siaran terkini dan memaparkannya:
router.route('/latestPosts').get(function(req, res) {
Post.getLatest(function(err, posts) {
Jika (err) {
silap buang;
}
res.render('posts', { posts: posts });
});
});
router.route('/latestPosts').get(function(req,res){
client.get('posts', function (err, posts) {
Jika (siaran) {
Kembalikan res.render('posts', { posts: JSON.parse(posts) });
}
Post.getLatest(fungsi(err, posts) {
Jika (err) {
silap buang;
}
client.set('posts', JSON.stringify(posts));
res.render('posts', { posts: posts });
});
});
});
4. pemampatan gzip
Mendayakan pemampatan gzip boleh memberi impak yang besar pada aplikasi web anda. Apabila penyemak imbas termampat gzip meminta beberapa sumber, pelayan memampatkan respons sebelum mengembalikannya kepada penyemak imbas. Jika anda tidak gzip sumber statik anda, penyemak imbas mungkin mengambil masa yang lebih lama untuk mendapatkannya.
Dalam aplikasi Express, kami boleh menggunakan perisian tengah express.static() terbina dalam untuk mengendalikan kandungan statik. Selain itu, kandungan statik boleh dimampatkan dan diproses menggunakan perisian tengah mampatan. Berikut ialah contoh penggunaan:
app.use(compression()); //gunakan mampatan
app.use(express.static(path.join(__dirname, 'public')));
5 Jika boleh, gunakan pemaparan sebelah pelanggan
Kini, terdapat banyak rangka kerja MVC/MVVM sisi pelanggan yang serba boleh dan berkuasa, seperti AngularJS, Ember, Meteor, dll., menjadikannya sangat mudah untuk membina aplikasi satu halaman. Pada asasnya, anda hanya mendedahkan API dan mengembalikan respons JSON kepada klien tanpa memaparkan halaman di sebelah pelayan. Di sisi pelanggan, anda boleh menggunakan bingkai untuk mengatur JSON dan memaparkannya pada UI. Menghantar hanya respons JSON pada pelayan menjimatkan lebar jalur dan meningkatkan prestasi kerana anda tidak perlu mengembalikan penanda reka letak dalam setiap respons, bukan?
Lihat tutorial saya ini tentang cara mendedahkan API RESTful dengan Express 4. Saya juga menulis satu lagi tutorial yang menunjukkan cara menggabungkan API ini dengan AngularJS.
6 Jangan simpan terlalu banyak data dalam Sesi
Dalam aplikasi halaman Express biasa, data Sesi disimpan dalam ingatan secara lalai. Apabila anda menyimpan terlalu banyak data dalam Sesi, overhed pelayan akan meningkat dengan ketara. Jadi, sama ada anda bertukar kepada kaedah storan lain untuk menyimpan data Sesi, atau cuba mengurangkan jumlah data yang disimpan dalam Sesi.
Sebagai contoh, apabila pengguna log masuk ke aplikasi anda, anda boleh menyimpan hanya ID mereka dalam Sesi dan bukannya keseluruhan objek data pengguna. Selain itu, untuk pertanyaan di mana anda boleh mendapatkan objek melalui id, anda mungkin ingin menggunakan MongoDB atau Redis untuk menyimpan data sesi.
7. Pertanyaan Optimumkan
Andaikan anda mempunyai blog dan anda ingin memaparkan catatan terkini di halaman utama. Anda boleh mendapatkan semula data melalui Mongoose seperti ini:
8. Verwenden Sie die Standard-V8-Methode
Einige Vorgänge für Sammlungen, wie z. B. „map“, „reduce“ und „forEach“, werden möglicherweise nicht in allen Browsern unterstützt. Wir können einige Browserkompatibilitätsprobleme über die Front-End-Bibliothek lösen. Für Node.js müssen Sie jedoch genau wissen, welche Vorgänge die V8-JavaScript-Engine von Google unterstützt. Auf diese Weise können Sie diese integrierten Methoden direkt verwenden, um die Sammlung auf der Serverseite zu bearbeiten.
9. Verwenden Sie Nginx vor Node
Nginx ist ein kleiner, leichter Webserver, der die Belastung Ihres Node.js-Servers reduzieren kann. Sie können statische Ressourcen auf Nginx statt auf Node konfigurieren. Sie können gzip verwenden, um Antworten auf Nginx zu komprimieren und so alle Antworten kleiner zu machen. Wenn Sie also ein laufendes Produkt haben, sollten Sie meiner Meinung nach Nginx verwenden, um die Ausführungsgeschwindigkeit zu verbessern.
10. JavaScript verpacken
Schließlich können Sie die Geschwindigkeit der Seitenanwendung auch erheblich verbessern, indem Sie mehrere JS-Dateien packen. Wenn der Browser beim Rendern der Seite auf das Element