Gambar tidak lengkap melalui proxy: periksa penyelesaian penulisan Netty
Saat gambar tiba tidak lengkap melalui proxy, periksa apakah origin menutup kanal Netty sebelum penulisan respons asinkron selesai.
Sebuah gambar berfungsi pada koneksi langsung yang cepat, tetapi tidak lengkap melalui forward proxy yang lebih lambat. Salah satu penyebab yang mungkin adalah origin menutup koneksi saat responsnya masih ditulis.
I/O Netty bersifat asinkron. Kembali dari writeAndFlush tidak berarti operasi itu telah selesai. Urutan ini karena itu tidak aman untuk respons yang masih memiliki byte dalam antrean:
ctx.writeAndFlush(response);
ctx.close();
Saat pertukaran HTTP sengaja ditutup setelah pesan respons terakhirnya, lampirkan penutupan ke future penulisan tersebut:
ctx.writeAndFlush(finalResponseMessage)
.addListener(ChannelFutureListener.CLOSE);
Fragmen tersebut mengasumsikan respons sudah dibangun dan dibingkai dengan benar. Untuk body yang dialirkan, gunakan penyelesaian pesan terakhirnya, bukan penulisan header. Untuk koneksi HTTP persisten, jangan menambahkan penutupan hanya karena respons selesai.
Periksa kegagalan future sebagai bagian dari penanganan galat normal aplikasi. Penyelesaian mencakup kegagalan dan pembatalan, jadi penyelesaian saja bukan tanda terima pengiriman dari peramban.
Perbandingan yang berguna adalah panjang respons lengkap dan hasil penulisan pada setiap jalur. Proxy dapat mengubah waktu cukup untuk mengungkap galat siklus hidup yang sudah ada; keberadaannya tidak membuktikan bahwa kompresor atau cache-nya membuang byte tersebut.