Mobil aygıtımda bir Java ME uygulaması kullanarak Tomcat Sunucusuna iletişim yapıyorum.
Ağ üzerinden gönderilen bayt sayısını azaltmak için Gzip kullanarak istekleri/yanıtlarımı sıkıştırabilir miyim diye merak ediyordum.GZIP kullanarak HTTP İsteklerini sıkıştırabilir miyim?
cevap
Modern telefonların çok fazla işlemci gücü vardır ve ağ nispeten yavaştır, bu nedenle sıkıştırma mükemmel bir anlam ifade eder. Ayrıca yapmak da oldukça kolay. J2ME tarafında
, böyle bir şey yapmakhttp://www.tinyline.com/utils/index.html
,
hc.setRequestProperty("Accept-Encoding", "gzip, deflate");
if (hc.getResponseCode() == HttpConnection.HTTP_OK) {
InputStream in = hc.openInputStream();
if ("gzip".equals(hc.getEncoding()))
in = new GZIPInputStream(in);
...
Biz TinyLine'da gelen GZIPInputStream kullanın ama başkaları da vardır eminim, (siz httpconnection kullanmak varsayarak) Sunucu tarafında, hepsi yerleşik. Aşağıdaki öznitelikleri, Bağlayıcıya Tomcat üzerinde server.xml içinde ekleyin:
<Connector
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,application/json"
... />
Sunucu tarafında, here numaralı açıklandığı gibi etkinleştirebilirsiniz, ancak mobil uygulamanın,gibi gzip'i açabilen bir kitaplığa ihtiyacı olacaktır. Çalışmak için biraz işe yarayabilir ...
Tomcat'i kullandığınızdan, Tomcat sunucusunun önüne bir Apache HTTP Sunucusu örneği koyma olasılığını göz önünde bulundurun.
Bu, Apache HTTP Sunucusu için mod_jk modülü kullanılarak yapılabilir. Bunu yaptıktan sonra Apache'de mod_gzip/mod_deflate'u kullanabilirsiniz.
Elbette, müracaatçınız bunun çalışması için sıkıştırılmış yanıtları işleme yeteneğine sahip olmalıdır. İstemcinizi sıkıştırılmış yanıtlarla çalışmaya zorlarsanız, istemci düz metin yanıtlarını beklediği için genellikle anlamsız görünür. İstemcinin Kabul-Kodlama başlıklarında, müşterinin sıkıştırılmış yanıtları işleme yeteneğinin kesin göstergesini bulacaksınız.
Bu, Apache HTTP Sunucusu'nun ağda tanıtılmasını önlemek istiyorsanız, bir Servlet veya bir ZipOutputStream veya GZipOutputStream yazan bir sunucu filtresi kullanarak programlanabilir. how to do this at the OReilly OnJava.com site'da bazı işaretçiler bulacaksınız.
Apache'yi eklemeden Tomcat'ta gzip sıkıştırması yapabilirsiniz. HTTP bağlayıcısının sıkıştırma özelliğine bakın: http://tomcat.apache.org/tomcat-5.5-doc/config/http.html –
Evet, biliyorum, ancak sıkıştırmanın HTTP Sunucusu'nda yapılmasının bir nedeni var. Uygulama sunucusuna karşı - sunucu yükünün dağıtımı. Uygulama sunucusu, uygulama mantığının çalıştırılması olağan görevinden ayrı olarak yanıt sıkıştırmasıyla yüklenmesini istemez. Ayrıca, Apache HTTP sunucusunun Tomcat'den çok daha iyi performans özellikleri vardır. –
Bir HTTP isteğinin veya yanıtının içeriğini, ancak üstbilgileri sıkıştırabilirsiniz. HTTP 1.1 özelliklerinin 3.6 bölümüne ve İçerik Kodlama üstbilgisini açıklayan sonraki bölüme bakın.
DÜZENLEME: Bunun ters yüz tarafı, bir HTTP sunucu tarafının belirli bir sıkıştırma biçimini kabul edeceğinin bir garantisi olmamasıdır. HTTP'nin sunucu tarafı uygulamasının kalitesine bağlı olarak, istek içeriğinin sıkıştırıldığını bile algılayamayabilir. Yani, sunucu tarafının sıkıştırılmış istek içeriğini desteklediğini bilmiyorsanız bunu yapmak istemezsiniz.
- 1. iostream'leri gzip dosyalarını anında okuyabilir ve sıkıştırabilir mi?
- 2. HTTP isteklerini dinle
- 3. Javascript ile HTTP isteklerini yakalayın
- 4. AngularJS, tüm $ http isteklerini keser
- 5. Fiddler Java uygulamalarından HTTP isteklerini yakalamıyor
- 6. IE8 tarafından yapılan HTTP isteklerini izleyin
- 7. http isteklerini anında ve sıkıştırılmış arabellek belleğe yüklemeden nasıl sıkıştırılır
- 8. Curl kullanarak "Content-Encoding: gzip, gzip" nasıl çözülür?
- 9. Spring gzip - Tomcat gzip
- 10. Eşzamansız http isteklerini python'da bir kerede nasıl gönderirim?
- 11. WebRequest'i kullanarak AJAX isteklerini engelleyin ve değiştirin
- 12. php sunucu isteklerini azaltın
- 13. HTTP isteklerini AngularJS denetleyicisinden ve bir hizmetten nasıl taşıyabilirim?
- 14. Boto kullanarak yükleme yaparken gzip nasıl yapılır
- 15. Açılmış gzip dosyasını Python'da Popen ile kullanabilir miyim?
- 16. python isteklerini kullanarak yeniden yönlendirme URL'si nasıl edinilir
- 17. Ağ isteklerini koklama
- 18. $ http
- 19. gzip kullanarak bir .net nesnesi örneği nasıl sıkıştırılır
- 20. ASP.NET/IIS7'de Gzip kullanarak hata sayfası çıktısı
- 21. GZIP kullanılarak java
- 22. saniye başına tomcat isteklerini izleme?
- 23. Android HttpURLConnection: gzip sıkıştırma
- 24. Http isteği kullanarak Alamofire
- 25. WCF: OperationContext kullanarak REST ve SOAP isteklerini ayırt etme
- 26. multipart data python isteklerini kullanarak POST: multipart sınırı bulunamadı
- 27. Uçuş sırasında AJAX isteklerini Jquery .ajax kullanarak iptal etme?
- 28. Node.js HTTP yanıtı akışları
- 29. Yay kullanarak HTTP posta isteği nasıl gönderilir?
- 30. Jersey'de GZIP kodlaması 2/Grizzly
Stephen C'nin söylediği gibi, bu sadece verileri veya HTTP başlıklarını sıkıştıracak mı? –
@Kevin, bu başlıkları sıkıştırmayacak. Üstbilgiler sıkıştırılacaksa, istemci nasıl sıkıştırıldığını nasıl belirler - GZIP yalnızca bir sıkıştırma yöntemidir. –
@Kevin. Bu doğru. Başlıklar, standartlara dayalı HTTP kullanılarak sıkıştırılamaz. –