Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
github.com/osvaldosilitonga/payload-compression-gzip
HTTP Compression adalah teknik kompresi data pada HTTP response, yeng bertujuan agar ukuran/size output menjadi lebih kecil dan response time lebih cepat.
Ini adalah simulasi penerapan Payload Compression. Pada aplikasi ini disedian 3 endpoint yaitu: GET: api/v1/images/download/{id}
, POST: api/v1/images/upload
, GET: api/v1/images
. Endpoint tersebut berfungsi untuk melakukan download file, upload file, dan mengambil semua data dalam bentuk JSON. Aplikasi ini ditulis dengan bahasa Golang dengan menggunakan framework Echo.
Tujuan dari pembuatan aplikasi ini untuk melihat perbedaan antara response yang menerapkan kompresi dan response yang tidak menerapkan kompresi.
Pada framework Echo sudah disediakan middleware untuk melakukan Payload Compression menggunakan GZip. Untuk lebih lengkapnya bisa mengunjungi halaman dokumentasi berikut: https://echo.labstack.com/docs/middleware/gzip
e := echo.New()
e.Use(middleware.GzipWithConfig(middleware.GzipConfig{
Level: 5,
MinLength: 1000,
}))
Pada code diatas di terapkan Payload Compression menggunakan Gzip pada middleware dengan configurasi sebagai berikut:
Untuk melihat perbedaan antara response dengan kompresi dan response tanpa kompresi, dilakukan percobaan request ke endpoint menggunakan CURL.
Pada 2 gambar di atas dapat dilihat perbedaan, dimana gambar 1.1. mengirim sebesar ukuran file aslinya yaitu [32768 bytes data], sementara pada gambar 1.2 dengan request yang sama namun melakukan kompresi terlebih dahulu, data yang di kirim berukuran [3778 bytes data] dan menggunakan Transfer-Encoding: chunk, yang berarti data dikirim dalam potongan-potongan kecil.
Perbedaan dapat dilihat dari ukuran data yang dikirim. Pada gambar 2.1 tanpa menerapkan kompresi ukuran data yang dikirim [390 bytes data], sementara pada gambar 2.2 yang melakukan kompresi ukuran data yang dikirim [250 bytes data]
Manfaat dari menerapkan Payload Compression adalah dapat meningkatkan kecepatan pengiriman data, menghemat penggunaan bandwith dikarenakan ukuran response data yang diperkecil dan efisiensi jaringan.
Namun perlu dipertimbangkan juga dikarenakan adanya proses kompresi dan dekompresi data maka akan memerlukan resource CPU di sisi server dan klien. Pada server dengan beban tinggi atau klien dengan perankat keras yang lemah, ini bisa menjadi masalah. Mengkompresi respons yang sangat kecil juga dapat menambah overhead tanpa memberikan manfaat yang signifikan karena ukuran kompresi tidak jauh berbeda dari ukuran aslinya. Proses kompresi dan dekompresi juga dapat menambah sedikit latency pada waktu response karena memerlukan waktu tambahan untuk melakukan proses tersebut.
Penting untuk menyesuaikan konfigurasi berdasarkan kebutuhan spesifik aplikasi dan melakukan pengujian untuk menemukan keseimbangan yang optimal antara penghematan bandwidth dan kinerja server serta klien.
FAQs
Unknown package
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.