Imej berfungsi pada sambungan langsung yang pantas, tetapi tidak lengkap melalui proksi penghantaran yang lebih perlahan. Satu punca yang mungkin ialah asalan menutup sambungan semasa responsnya masih ditulis.

I/O Netty adalah tak segerak. Kembali daripada writeAndFlush tidak bermaksud operasi itu telah selesai. Oleh itu susunan ini tidak selamat untuk respons yang masih mempunyai bait dalam baris gilir:

ctx.writeAndFlush(response);
ctx.close();

Apabila pertukaran HTTP ditutup secara sengaja selepas mesej respons terakhirnya, lampirkan penutupan pada future tulisan itu:

ctx.writeAndFlush(finalResponseMessage)
    .addListener(ChannelFutureListener.CLOSE);

Serpihan ini menganggap respons telah dibina dan dibingkaikan dengan betul. Untuk badan yang dialirkan, gunakan penyiapan mesej terakhirnya, bukan penulisan pengepalanya. Untuk sambungan HTTP berterusan, jangan tambah penutupan semata-mata kerana respons telah tamat.

Periksa kegagalan future sebagai sebahagian daripada pengendalian ralat biasa aplikasi. Penyiapan merangkumi kegagalan dan pembatalan, jadi penyiapan sahaja bukan resit penghantaran daripada pelayar.

Perbandingan yang berguna ialah panjang respons penuh dan hasil tulisan pada setiap laluan. Proksi boleh mengubah pemasaan secukupnya untuk mendedahkan ralat kitaran hayat sedia ada; kehadirannya tidak membuktikan bahawa pemampat atau cachenya telah membuang bait tersebut.

Artikel berkaitan