Panduan

Apa Itu Caching? Panduan Ringkas untuk Pembina Aplikasi

Caching bermakna menyimpan salinan sedia ada sesuatu yang lambat atau mahal untuk diperoleh, supaya permintaan seterusnya untuknya boleh dijawab dengan pantas daripada salinan itu. Salinan yang disimpan dipanggil cache. Pelayar anda men-cache imej supaya laman dimuat lebih pantas pada lawatan kedua; pelayan men-cache hasil pertanyaan pangkalan data yang perlahan supaya ia tidak perlu menjalankannya untuk setiap pelawat.

Caching menjadikan aplikasi lebih pantas dan lebih murah untuk dijalankan. Pertukaran utamanya ialah salinan boleh menjadi lapuk.

Mengapa caching penting apabila anda membina dengan AI

Anda akan menemui caching dalam aplikasi yang dibina AI dalam tiga cara:

  • “Saya sudah mengemas kini aplikasi tetapi masih melihat versi lama.” Ini ialah situasi caching yang paling biasa, dan biasanya tidak berbahaya — pelayar atau CDN anda sedang memaparkan salinan yang disimpan.
  • Kelajuan. Jika halaman perlahan kerana ia mengira semula nombor yang sama untuk setiap pelawat, men-cache hasilnya boleh menjadikannya terasa serta-merta.
  • Kos. Banyak pembina AI dan hos mengenakan bayaran untuk pengkomputeran, masa pangkalan data dan panggilan API luaran. Jika seribu pelawat mencetuskan permintaan mahal yang sama, caching membolehkan anda membayarnya sekali sahaja.

Mengetahui asas-asasnya membolehkan anda meminta caching di tempat yang membantu dan mengenal pastinya apabila ia menjadi punca sesuatu kelihatan salah.

Analogi harian

Bayangkan dapur sebuah kafe yang sibuk.

Setiap pagi, tukang masak boleh membancuh setiap kopi daripada biji yang baru dikisar apabila ia dipesan. Itu lambat. Sebaliknya, mereka menyimpan sejag kopi tapis yang sudah sedia di atas pemanas. Kebanyakan pelanggan mendapat secawan dalam beberapa saat — itulah cache hit. Apabila jag itu habis, seseorang membancuh yang baharu — itulah cache miss.

Tetapi kopi yang terlalu lama akan basi, jadi kafe itu ada peraturan: buang mana-mana jag yang berusia lebih 30 minit. Peraturan itu ialah masa luput cache. Tiada siapa akan menyimpan jag yang sama sepanjang hari, dan tiada siapa akan membancuh pesanan khusus seseorang dengan susu oat dan tiga sudu gula terlebih dahulu — ada perkara yang tidak sepatutnya di-cache langsung.

Di mana cache wujud

Satu muatan halaman boleh melalui beberapa cache, dari yang paling dekat dengan pengguna hingga yang paling jauh:

CacheDi mana iaApa yang biasanya disimpanContoh
Cache pelayarPada peranti pelawatImej, stylesheet, skrip, fonLogo anda dimuat serta-merta pada halaman kedua
Cache CDNPelayan di seluruh dunia, berhampiran pelawatFail statik dan kadangkala keseluruhan halamanPelawat di Tokyo mendapat fail daripada pelayan berdekatan, bukan asal anda
Cache aplikasiPada atau berhampiran pelayan anda, selalunya dalam memori atau RedisHasil pertanyaan perlahan atau panggilan API luaranKadar pertukaran hari ini, diambil sekali sejam
Cache pangkalan dataDalam pangkalan dataData yang kerap digunakan dan pelan pertanyaanBaris popular kekal dalam memori yang pantas

CDN (content delivery network) pada asasnya ialah rangkaian cache sedunia untuk fail laman anda.

Bagaimana cache memutuskan apa yang disimpan

Setiap cache perlu menjawab soalan yang sama:

  • Apa yang boleh di-cache? Data awam dan dikongsi (gambar produk, siaran blog) — ya. Data peribadi (halaman akaun pengguna, mesej mereka) — tidak sekali-kali dalam cache yang dikongsi.
  • Untuk berapa lama? Ini ialah TTL (time to live). Logo mungkin di-cache selama setahun; tahap stok selama 30 saat.
  • Bagaimana ia dikemas kini? Sama ada salinan itu tamat tempoh dan diambil semula, atau aplikasi sengaja membuangnya apabila data berubah — dipanggil invalidation.

Untuk laman web, pelayan memberitahu pelayar dan CDN cara men-cache setiap fail menggunakan header Cache-Control. Sebagai contoh, Cache-Control: max-age=3600 bermaksud “anda boleh menggunakan semula salinan ini selama sejam”.

Alat binaan moden mengendalikan bahagian paling sukar untuk fail statik dengan cache busting: setiap kali fail berubah, ia mendapat nama baharu dengan cap cetakan jari, seperti app.3f9a2c.js. Pelayar boleh men-cache nama lama untuk tempoh yang lama, kerana versi baharu hanya mempunyai nama yang berbeza.

Contoh kerja: katalog produk

Anda mempunyai kedai dalam talian kecil. Halaman utama memaparkan 50 produk dengan harga dan tahap stok daripada pangkalan data, serta senarai “popular” yang memerlukan pengiraan perlahan merentasi semua pesanan.

  1. Imej dan skrip di-cache oleh pelayar dan CDN untuk tempoh yang lama. Setiap binaan baharu memberi fail yang berubah nama baharu, jadi kemas kini tetap muncul.
  2. Senarai popular dikira sekali setiap 10 minit dan disimpan dalam cache aplikasi. Setiap pelawat dalam tempoh 10 minit itu mendapat hasil yang disimpan dengan serta-merta.
  3. Harga di-cache untuk tempoh yang singkat, dan cache dikosongkan setiap kali anda mengedit produk, jadi pelanggan tidak pernah melihat harga lama untuk tempoh yang lama.
  4. Stok semasa daftar keluar tidak sekali-kali di-cache. Apabila seseorang mengklik “Beli”, aplikasi menyemak pangkalan data sebenar, supaya ia tidak boleh menjual barang yang baru habis.
  5. Halaman troli dan akaun tidak pernah disimpan dalam cache yang dikongsi, kerana ia peribadi.

Hasilnya: halaman utama pantas, pangkalan data melakukan kerja yang jauh lebih sedikit, dan tiada apa yang penting untuk wang atau privasi yang pernah lapuk.

Istilah utama

IstilahMaksud
Cache hit / missData ditemui dalam cache / terpaksa diambil daripada sumber.
TTL (time to live)Berapa lama salinan yang di-cache dianggap masih segar.
Data lapuk (stale)Salinan yang di-cache yang sudah ketinggalan zaman.
InvalidationMembuang salinan yang di-cache dengan sengaja kerana yang asal telah berubah.
Cache bustingMenukar nama atau URL fail apabila ia berubah, supaya cache mengambil versi baharu.
Cache-ControlHeader HTTP yang memberitahu pelayar dan CDN cara men-cache respons.
Muat semula paksa (hard refresh)Memuat semula halaman sambil memberitahu pelayar supaya mengabaikan cachenya.
RedisStor data dalam memori yang popular, selalunya digunakan sebagai cache aplikasi.

Salah faham yang biasa

  • “Caching sentiasa baik.” Men-cache perkara yang salah menyebabkan pepijat sebenar: harga lama, siaran baharu yang tidak muncul, atau — kes paling buruk — halaman peribadi seorang pengguna ditunjukkan kepada pengguna lain. Cache dengan sengaja.
  • “Jika saya nampak versi lama, kemas kini saya gagal.” Biasanya tidak. Cuba muat semula paksa (Ctrl+Shift+R, atau Cmd+Shift+R pada Mac) atau tetingkap persendirian sebelum menganggap ada sesuatu yang rosak.
  • “Caching membetulkan aplikasi yang perlahan.” Ia menyembunyikan kelambatan untuk permintaan berulang. Permintaan pertama tetap perlahan, dan jika masalah asasnya ialah indeks pangkalan data yang hilang, betulkan itu juga.
  • “Saya patut men-cache segala-galanya selama mungkin.” Masa cache yang panjang sesuai untuk fail yang mendapat nama baharu apabila ia berubah. Untuk halaman HTML dan data, tempoh yang lebih pendek lebih selamat.
  • “Mengosongkan cache saya membetulkannya untuk semua orang.” Ia hanya mengosongkan pelayar anda. Pelawat dan cache CDN masih mempunyai salinan mereka sendiri.

Apa nak minta daripada pembina AI anda

  • “Bahagian mana dalam aplikasi ini yang perlahan, dan yang mana boleh di-cache dengan selamat?”
  • “Cache [senarai popular / hasil API] selama [N] minit, dan kosongkannya apabila data asas berubah.”
  • “Pastikan tiada halaman dengan data peribadi atau akaun boleh di-cache oleh CDN atau cache yang dikongsi.”
  • “Tetapkan masa cache yang panjang untuk fail statik yang diberi cap cetakan, dan yang pendek untuk HTML.”
  • “Cache respons daripada [API luaran] supaya kami tidak memanggilnya pada setiap muatan halaman — dan beritahu saya betapa lapuknya data itu mungkin.”
  • “Saya nampak versi lama selepas menerbitkan. Adakah ini cache pelayar saya, atau ada sesuatu yang tidak dibuat penyebaran (deploy)?”

Caching dalam Mythex

Selepas anda menerbitkan kemas kini kepada aplikasi Mythex, dokumentasi menyatakan bahawa cache CDN mungkin lambat sebentar, dan muat semula paksa pada URL awam menunjukkan versi baharu — lihat Cara menerbitkan. Halaman Had hos juga mengesyorkan caching untuk aset statik, kerana hosting, masa pangkalan data dan lebar jalur dibayar daripada baki kredit anda. Apa-apa di luar itu — men-cache hasil pertanyaan atau respons API — ialah sesuatu yang anda minta ejen bina ke dalam aplikasi anda.

Bacaan berkaitan: apa itu CDN, cara menjadikan laman web anda lebih pantas dan apa itu rate limiting.

Soalan lazim

Apakah caching dalam istilah mudah?

Caching bermakna menyimpan salinan sesuatu yang lambat atau mahal untuk diperoleh, supaya apabila ia diperlukan kali seterusnya, ia boleh dihidangkan dengan pantas daripada salinan yang disimpan. Pelayar, CDN, pelayan dan pangkalan data semuanya menggunakan cache untuk menjadikan aplikasi lebih pantas dan lebih murah untuk dijalankan.

Mengapa saya masih melihat versi lama laman web saya selepas mengemas kininya?

Pelayar atau CDN anda berkemungkinan besar sedang menghidangkan salinan fail lama yang disimpan. Muat semula paksa (Ctrl+Shift+R pada Windows, Cmd+Shift+R pada Mac) biasanya menyelesaikannya. Untuk pelawat, laman yang dibina dengan baik memberi fail yang dikemas kini nama baharu supaya cache mengambil versi baharu secara automatik.

Apa yang berlaku apabila saya mengosongkan cache?

Mengosongkan cache pelayar memadam salinan fail dan halaman yang disimpan oleh pelayar, supaya ia dimuat turun semula dengan segar pada kali seterusnya. Ia boleh membetulkan halaman yang kelihatan rosak atau lapuk, dan halaman akan dimuat sedikit lebih perlahan pada kali pertama selepas itu.

Bolehkah caching menyebabkan masalah?

Ya. Risiko utama ialah menghidangkan data lapuk — harga lama, atau tahap stok yang ketinggalan — atau, yang lebih teruk, menyimpan halaman peribadi seseorang pengguna dan menunjukkannya kepada orang lain. Peraturan caching yang baik menentukan apa yang boleh di-cache, untuk berapa lama, dan tidak sekali-kali menyimpan data peribadi dalam cache yang dikongsi.

Mythex · Pricing · Bina apa sahaja dengan AI · Templat laman web dan aplikasi · Mythex dibandingkan · Glosari pembinaan aplikasi AI · Alat percuma untuk membina aplikasi dengan AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)