Caching web sebagai contoh membeli susu di toko


Jika Anda membeli susu di toko, Anda dapat memahami cara kerja caching di sisi server dan di sisi browser.

Jika Anda adalah pengguna Internet aktif (dan ini kemungkinan besar terjadi), Anda terus menggunakan caching, tetapi Anda mungkin tidak tahu "di balik layar": kapan dan bagaimana cara kerjanya.

Dari sudut pandang pengembang, caching memudahkan untuk membuat aplikasi web dan server web berkinerja tinggi: Anda tidak perlu terus-menerus mengoptimalkan server yang dipenuhi dengan ribuan permintaan - Anda cukup menerapkan protokol caching dan hidup menjadi lebih mudah.

Saat melakukan caching, waktu pemuatan halaman berkurang dari 2 detik menjadi 1 detik ... yang tidak terlalu mengesankan, bukan? Tetapi Anda tidak dapat melakukannya tanpanya ketika Anda harus memproses permintaan dari sejumlah besar pengguna.

Menggunakan caching di salah satu aplikasi web saya, saya menyadari bahwa hanya melalui persyaratan bukanlah cara terbaik untuk menjelaskan pendekatan ini. Terpikir oleh saya bahwa analogi yang baik adalah jalur susu dari peternakan ke lemari es.

Untuk memahami penjelasan saya, Anda perlu tahu sedikit tentang dasar - dasar cara kerja server web . Ayo mulai!

Diterjemahkan ke Alconost

Seperti apa Internet tanpa caching?


Sebelum kita beralih ke caching, mari kita pikirkan bagaimana Internet akan terlihat tanpa itu. Bayangkan sejenak bahwa Anda hidup di abad ke 18 - 19. di pedesaan. Anda memiliki pertanian tetapi tidak ada lemari es. Anda memelihara beberapa sapi, tetapi susunya rusak dengan cepat, dan karenanya sangat sulit untuk mendapatkan manfaat darinya.

Ngomong-ngomong, di beberapa tempat orang masih belum memiliki lemari es: mereka langsung minum susu segar, atau mencampurnya dengan biji-bijian dan membiarkannya berfermentasi - pendekatan yang menarik, bukan?

Secara umum, Anda ingin menjual susu ke penduduk desa lainnya. Tetapi mereka harus meminumnya dengan sangat cepat. Misalkan satu sapi dapat menghasilkan sepuluh liter susu per hari. Ini berarti bahwa jika terlalu banyak orang tiba-tiba datang ke peternakan untuk mendapatkan susu, Anda harus meminta mereka untuk kembali keesokan harinya.



Dan ini tidak terjadi ketika Anda hanya bisa mendapatkan beberapa sapi lagi dan berkembang, karena Anda memiliki basis pelanggan yang terbatas: hanya penduduk satu desa yang membeli susu. Karena itu, ada batasan yang pasti.



Tanpa caching, kekuatan pemrosesan server membatasi Anda. Caching digunakan untuk memuat sumber daya statis seperti:

  • gambar
  • CSS
  • file html statis
  • File JavaScript.

Secara default, untuk setiap permintaan yang masuk, server harus mengirim respons baru. Tetapi permintaan pemuatan halaman sebenarnya bisa berarti empat permintaan terpisah - satu untuk masing-masing kategori di atas. Mempertimbangkan bahwa file gambar biasanya cukup banyak, sejumlah besar pengguna dari seluruh dunia akan dengan mudah membebani server Anda, dan halaman akan lebih lama memuat.



Idealnya, saya ingin mengurangi beban di server, entah bagaimana menjaga jawaban untuk permintaan umum. Server tidak harus memproses setiap permintaan terpisah yang baru - respons akan diterima dari cache. Tentu saja, Anda selalu dapat membayar dan menambahkan lebih banyak server, tetapi ini dapat menyebabkan kenaikan biaya yang tidak terkendali.

Caching sisi server


Kembali ke sapi kita. Apakah Anda tahu apa yang akan memfasilitasi pekerjaan peternakan sapi perah kami?

Berbelanja dengan kulkas!

Warga tidak perlu lagi datang ke peternakan dan segera minum susu, karena dapat disimpan dengan aman selama beberapa minggu.

Toko menghilangkan beban dari peternakan: sekarang sapi tidak perlu diganggu untuk setiap pembeli. Toko berurusan dengan permintaan, dan Anda hanya perlu memerah susu sapi setiap hari. Dan satu lagi plus: sekarang penduduk desa tetangga akan dapat membeli susu yang disimpan di lemari es.





Cache sisi server akan, seperti toko, menangani permintaan populer dan mengirimkan konten lebih cepat dan lebih andal.

Gambar di atas menunjukkan server proxy caching : ini menyimpan file statis yang digunakan untuk menanggapi permintaan umum. Server ini mencegat permintaan tersebut dan dengan cepat memberikan jawaban, yang memungkinkan Anda untuk menghapus beban yang sesuai dari server web utama.

Pada titik ini, Anda mungkin sudah memiliki pertanyaan:

  1. Bagaimana cara mendefinisikan kueri "populer"?
  2. Berapa lama tanggapan disimpan dalam cache proxy?

Untuk menjelaskan ini, Anda akan memerlukan panduan yang lebih rinci untuk mengatur caching, tetapi sekarang penting bagi kami untuk mengetahui tentang satu konsep penting - kesegaran . Akan ada file yang berbeda pada proxy caching, di-cache pada waktu yang berbeda, dan perlu memutuskan apakah masih akan mengeluarkan file-file ini. Ini akan tergantung pada kebijakan cache .

Yang juga menyerupai menyimpan susu di toko. Direktur toko perlu memutuskan berapa lama ASI akan berbaring sebelum dibuang. Proxy cache mengukur kinerjanya dengan persentase klik cache - persentase konten yang dapat dikirim melalui server cache.

Jaringan Pengiriman Konten


Jadi, kami memiliki satu toko kelontong yang menjual susu Anda. Sudah tidak buruk, tetapi penduduk dapat membeli susu hanya di satu toko lokal, dan tidak mungkin seseorang akan datang dari jauh. Untuk memperluas produksi, Anda perlu menjual susu di lebih banyak toko.

Jadi, Anda mulai mengirimkan susu ke toko lain dan dengan demikian memenuhi permintaan di wilayah geografis yang jauh lebih luas. Ini mirip dengan Jaringan Pengiriman Konten (CDN) - proxy yang berlokasi di seluruh dunia (seperti yang dibahas di atas).

Sebagai pengguna akhir, Anda mungkin berpikir bahwa Internet berkecepatan tinggi memungkinkan Anda memuat sebagian besar situs dengan sangat cepat. Namun, ini terutama dimungkinkan berkat penggunaan CDN untuk pengiriman cepat file-file statis.

Jika Anda berada di Inggris dan mencoba mengunduh file yang di-cache di server di Khabarovsk, jawabannya akan muncul dengan penundaan tertentu: sinyal akan membutuhkan waktu untuk menempuh ribuan kilometer kabel. Oleh karena itu, server proxy caching lokal di Inggris akan memungkinkan Anda memuat situs lebih cepat.





Dengan demikian, server Anda dapat mengirim salinan sumber daya statis ke setiap server proxy pada CDN sehingga mereka memproses permintaan lokal sampai sumber daya tidak lagi "segar". Penyedia layanan CDN yang populer adalah Rackspace, Akamai, dan Amazon Web Services.

Caching sisi browser


Jadi, sekarang orang-orang dari seluruh negeri (dan bahkan dunia) dapat membawa pulang susu dingin yang diproduksi di peternakan Anda. Ada satu masalah: mereka tidak bisa menyimpan susu di rumah, jadi setelah membeli Anda harus segera meminumnya, dan kembali ke toko untuk mendapat porsi baru. Ternyata sistem seperti itu masih sangat tidak nyaman bagi pembeli.

Kulkas akan menyelamatkan kita!

Memiliki kulkas, Anda dapat menyimpan susu di rumah dan tidak lari setiap kali ke toko. Dalam hal caching, ini adalah tempat yang sama sekali berbeda untuk menyimpan sumber daya statis, karena ini terletak di sisi klien (dengan kata lain, di komputer tempat browser berjalan), dan server proxy kami berada di tempat yang jauh.

Pendekatan ini tidak hanya nyaman bagi pengguna dalam hal situs yang sering dikunjungi, seperti Facebook atau Amazon, tetapi juga memungkinkan situs ini untuk menghemat biaya server karena lebih sedikit permintaan yang diproses.





Dan di sini penting untuk dicatat bahwa susu di lemari es TIDAK MUNCUL! Bagaimanapun, Anda perlu membuat permintaan awal, yang akan mencapai server atau server proxy, dan hanya setelah itu Anda dapat men-cache beberapa file secara lokal.

Bagaimana browser tahu kapan harus meminta file baru dari server? Bagaimanapun, Anda perlu memperbarui file lokal.

Sama seperti produsen susu memberikan tanggal kedaluwarsa pada kemasan, sehingga server menambahkan pengidentifikasi khusus ke header respons HTTP. Sebenarnya ada empat sistem berbeda untuk caching HTTP. Skenario yang dijelaskan di atas sangat mirip dengan metode kedaluwarsa. Namun, dalam kasus beberapa metode lain, sebelum mengeluarkan file yang di-cache, permintaan ke server harus dikirim.



Kapan mulai menggunakan caching


Misalkan Anda membuat aplikasi web pertama Anda. Selama Anda tidak memiliki ribuan pengguna, Anda mungkin tidak perlu khawatir tentang protokol caching: biaya menjalankan server akan cukup rendah tanpanya. Namun, dengan pertumbuhan basis pengguna, caching juga perlu diimplementasikan - jika Anda ingin aplikasi memuat dengan cepat.

Ambil Heroku, misalnya, alat yang hebat untuk menggunakan aplikasi web pertama Anda. Namun, untuk menerapkan caching, Anda harus menggunakan layanan terpisah - misalnya, CloudFront dari Amazon atau CloudFlare - dan akan membutuhkan lebih banyak waktu untuk mempelajari ini.

Anda dapat melihat caching di sisi browser ketika Anda mencoba memuat ulang halaman dan mendapatkan sumber daya statis baru, tetapi halaman tidak berubah, tidak peduli berapa kali Anda menyegarkannya.

Biasanya, alasan untuk ini adalah protokol caching sisi browser. Untuk memintas cache browser dan meminta sumber daya baru dari server, Anda dapat menekan Cmd + Shift + R (jika Anda memiliki Mac) atau Ctrl + Shift + R (di PC).

Tentang penerjemah

Artikel ini diterjemahkan oleh Alconost.

Alconost melokalkan game , aplikasi , dan situs dalam 68 bahasa. Penerjemah asli bahasa, pengujian linguistik, platform cloud dengan API, pelokalan berkelanjutan, manajer proyek 24/7, segala format sumber daya string.

Kami juga membuat video iklan dan pelatihan - untuk situs yang menjual, gambar, iklan, pelatihan, permainan asah, penjelajah, trailer untuk Google Play dan App Store.

Lebih detail

Source: https://habr.com/ru/post/id416255/


All Articles