Pengantar prinsip
Kompresi HTTP dapat sangat meningkatkan kecepatan penelusuran situs web. Prinsipnya adalah setelah klien meminta sumber daya yang sesuai dari server, file sumber daya dikompresi dari server dan kemudian dikeluarkan ke klien . Dibandingkan dengan proses penelusuran biasa HTML, CSS, Javascript, dan Teks, ini dapat menghemat sekitar 40% lalu lintas. Lebih penting lagi, ini juga dapat mengompresi halaman web yang dihasilkan secara dinamis termasuk CGI, PHP, JSP, ASP, Servlet, SHTML, dll., dan efisiensi kompresinya juga sangat tinggi.
Metode konfigurasi
Tomcat 5.0 dan versi yang lebih baru mendukung kompresi konten keluaran, menggunakan format kompresi gzip.
Ubah %TOMCAT_HOME%/conf/server.xml dan revisi node sebagai berikut:
<Konektor port = "80" protokol = "HTTP/1.1" connectionTimeout = "20000" redirectPort = "8443" executor = "TomcatThreadPool" URIEncoding = "utf-8" kompresi = "pada" kompresiMinSize = "50" noCompressionUserAgents = "gozilla , traviata" compressionableMimeType="teks/html,teks/xml,teks/javascript,teks/css,teks/polos" />
Seperti dapat dilihat dari properti node di atas, untuk menggunakan fungsi kompresi gzip, Anda perlu menambahkan properti berikut ke node Connector
•compression="on" mengaktifkan fungsi kompresi
•compressionMinSize="50" Aktifkan ukuran konten keluaran kompresi, defaultnya adalah 2KB
•noCompressionUserAgents="gozilla, traviata" Nonaktifkan kompresi untuk browser berikut
•compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" Jenis sumber daya mana yang perlu dikompresi
Metode pengujian
Setelah mengaktifkan fungsi kompresi TOMCAT, bagaimana cara menguji apakah kompresi tersebut efektif?
Pertama-tama, Tomcat menentukan apakah browser mendukung fungsi kompresi berdasarkan pengkodean penerimaan di header permintaan browser. Jika nilai ini berisi gzip, itu berarti browser mendukung penelusuran konten terkompresi gzip fungsi kompresinya adalah Berlaku.
Permintaan langsung melalui browser
Setiap orang langsung mengakses server dengan konfigurasi kompresi diaktifkan melalui browser, dan kemudian menggunakan alat pengambilan paket untuk melihat paket data yang diambil. Jika ada banyak konten yang tidak dapat Anda pahami, berarti fungsi kompresi telah diaktifkan.
Dengan mensimulasikan permintaan melalui program, kami menggunakan httpclient untuk menulis program pengujian sederhana. Kodenya adalah sebagai berikut:
@Uji public void testGzip() { HttpClient httpClient = new HttpClient(); GetMethod getMethod = new GetMethod("http://localhost/admin.jsp"); menurunkan"); getMethod.addRequestHeader("agen-pengguna","Mozilla/4.0 (kompatibel; MSIE 6.0; Windows NT 5.0; Alexa Toolbar; Maxthon 2.0)"); int hasil = httpClient.executeMethod(getMethod); { System.out.println(getMethod.getResponseContentLength()); String html = getMethod.getResponseBodyAsString(); System.out.println(html); HttpException e) { e.printStackTrace(); } tangkapan (IOException e) { e.printStackTrace(); } akhirnya { getMethod.releaseConnection();
Jalankan program junit ini dan lihat konten apa yang dihasilkannya. Jika keluarannya berupa karakter yang kacau dan panjang konten yang dicetak jauh lebih kecil dari panjang sebenarnya, itu berarti konfigurasi kami telah diterapkan. Melalui beberapa alat verifikasi lainnya, kami akan melakukannya menemukan bahwa kecepatan Penjelajahan situs web akan meningkat secara signifikan.
Catatan: Jika Anda menemukan bahwa konten tidak dikompresi, Anda dapat mempertimbangkan untuk menyesuaikan ukuran compressionMinSize. Jika sumber daya yang diminta lebih kecil dari nilai ini, kompresi tidak akan diaktifkan.