Bagikan melalui


Cache lokal di Azure App Service

Petunjuk / Saran

Anda juga dapat mengajukan pertanyaan-pertanyaan ini kepada Microsoft Copilot di Azure:

  • Bagaimana cara kerja penyimpanan sementara lokal di Azure App Service?
  • Apa manfaat menggunakan cache lokal di Azure App Service?
  • Apa batasan penggunaan cache lokal di Azure App Service?

Untuk menemukan Copilot di Azure, pada toolbar portal Microsoft Azure , pilih Copilot.

Konten Azure App Service disimpan di Azure Storage dan diekspos sebagai berbagi konten yang tahan lama. Desain ini berfungsi dengan berbagai aplikasi dan memiliki atribut berikut:

  • Konten dibagikan ke beberapa instans komputer virtual (VM) aplikasi.
  • Kontennya tahan lama, dan aplikasi yang berjalan dapat memodifikasinya.
  • File log dan file data diagnostik tersedia di folder konten bersama yang sama.
  • Menerbitkan konten baru secara langsung memperbarui folder konten. Anda dapat segera melihat konten yang sama melalui situs web Source Control Manager (SCM, juga dikenal sebagai Kudu) dan aplikasi yang sedang berjalan. Namun, beberapa teknologi (seperti ASP.NET) mungkin memulai menghidupkan ulang aplikasi pada perubahan file tertentu untuk memuat konten terbaru.

Meskipun banyak aplikasi menggunakan satu atau beberapa fitur ini, ada beberapa aplikasi yang membutuhkan penyimpanan konten berperforma tinggi dan hanya untuk membaca, agar dapat dijalankan dengan ketersediaan tinggi. Aplikasi tersebut dapat memperoleh manfaat dari memanfaatkan cache lokal di instans VM.

Fitur cache lokal di Azure App Service menyediakan tampilan peran web konten Anda. Konten ini adalah cache tulis-tapi-buang dari konten penyimpanan Anda yang dibuat secara asinkron pada saat pengaktifan situs. Ketika cache siap, situs beralih untuk menggunakan konten yang di-cache.

Aplikasi yang berjalan dengan manfaat cache lokal dengan cara berikut:

  • Mereka kebal terhadap latensi yang terkait dengan mengakses konten di Azure Storage.
  • Masalah saat menyambungkan ke penyimpanan tidak memengaruhinya, karena salinan baca-saja di-cache secara lokal.
  • Mereka mengalami lebih sedikit aplikasi yang memulai ulang akibat perubahan pada pembagian penyimpanan.

Nota

Fitur cache lokal tidak didukung dalam aplikasi fungsi atau aplikasi App Service dalam kontainer, seperti di kontainer Windows atau dalam kontainer Linux bawaan atau kustom. Versi fitur yang tersedia untuk jenis aplikasi ini adalah App Cache.

Fitur cache lokal juga tidak didukung di tingkat harga F1 dan D1 App Service.

Bagaimana cache lokal mengubah perilaku App Service

Mengonfigurasi cache lokal menyebabkan perubahan ini:

  • D:\home sekarang menunjuk ke cache lokal, yang dibuat pada instans VM saat aplikasi dimulai. D:\local terus menunjuk ke penyimpanan sementara yang spesifik untuk VM.

  • Cache lokal berisi salinan tunggal dari folder /site dan /siteextensions dari penyimpanan konten bersama. Folder-folder ini terletak di D:\home\site dan D:\home\siteextensions, masing-masing. File-file ini disalin ke cache lokal saat pengaktifan aplikasi.

    Ukuran kedua folder ini dibatasi hingga 1 GB secara default, tetapi Anda dapat meningkatkannya menjadi 2 GB. Ketika ukuran cache meningkat, dibutuhkan waktu lebih lama untuk memuat cache. Jika Anda meningkatkan batas cache lokal menjadi 2 GB dan file yang disalin melebihi ukuran maksimum ini, App Service secara diam-diam mengabaikan cache lokal dan membaca dari berbagi file jarak jauh.

    Penting

    Ketika file yang disalin melebihi batas ukuran yang ditentukan untuk cache lokal, atau ketika tidak ada batas yang ditentukan, operasi penyebaran dan pertukaran mungkin gagal dengan kesalahan. Untuk detailnya, lihat FAQ tentang batas ukuran nanti di artikel ini.

  • Cache lokal dapat dibaca dan ditulis. Namun, setiap modifikasi dibuang saat aplikasi berpindah di antara VM atau memulai ulang. Jangan gunakan cache lokal untuk menyimpan data misi penting.

  • D:\home\LogFiles dan D:\home\Data berisi file log dan data aplikasi. Folder ini disimpan secara lokal pada instans VM dan secara berkala disalin ke penyimpanan konten bersama. Meskipun aplikasi dapat mempertahankan file log dan data dengan menulis ke folder ini, proses salin adalah upaya terbaik. File log dan data mungkin hilang jika instans VM tiba-tiba berhenti merespons.

  • Upaya salinan terbaik berpengaruh pada streaming log. Anda mungkin mengamati penundaan hingga satu menit dalam log yang dialirkan.

  • Di penyimpanan konten bersama, struktur folder untuk LogFiles dan Data berubah untuk aplikasi yang menggunakan cache lokal. Sekarang ada subfolder dengan nama yang terdiri dari pengidentifikasi unik dan stempel waktu. Setiap subfolder sesuai dengan instans VM tempat aplikasi berada atau sedang berjalan.

  • Folder lain di D:\home tetap berada di cache lokal dan tidak disalin ke penyimpanan konten bersama.

  • Penyebaran aplikasi melalui metode yang didukung diterbitkan langsung ke penyimpanan konten bersama yang tahan lama. Untuk menyegarkan folder D:\home\site dan D:\home\siteextensions di cache lokal, Anda harus merestart aplikasi. Untuk siklus hidup yang mulus, lihat bagian tentang praktik terbaik nanti di artikel ini.

  • Tampilan konten default situs SCM terus mencerminkan penyimpanan konten bersama.

Nota

Jika Anda menggunakan Java (Java SE, Tomcat, atau JBoss EAP), maka secara default, artefak Java (.jar, .war, dan file .ear) disalin secara lokal ke pekerja. Jika aplikasi Java Anda bergantung pada akses baca-saja ke file tambahan, atur JAVA_COPY_ALL ke true sehingga file tersebut juga disalin. Jika cache lokal diaktifkan, itu lebih diutamakan daripada perilaku khusus Java ini.

Metode untuk mengaktifkan cache lokal

Anda mengonfigurasi cache lokal dengan menggunakan kombinasi pengaturan aplikasi yang telah ditentukan. Anda dapat mengatur pengaturan aplikasi ini dengan menggunakan salah satu metode berikut.

Mengonfigurasi cache lokal dengan menggunakan portal Microsoft Azure

Aktifkan cache lokal berdasarkan per aplikasi web dengan menambahkan pengaturan aplikasi ini: WEBSITE_LOCAL_CACHE_OPTION = Always.

Mengonfigurasi cache lokal dengan menggunakan Azure Resource Manager

{
    "apiVersion": "2015-08-01",
    "type": "config",
    "name": "appsettings",
    "dependsOn": [
        "[resourceId('Microsoft.Web/sites/', variables('siteName'))]"
    ],

    "properties": {
        "WEBSITE_LOCAL_CACHE_OPTION": "Always",
        "WEBSITE_LOCAL_CACHE_SIZEINMB": "1000"
    }
}

Mengubah pengaturan ukuran dalam cache lokal

Secara default, ukuran cache lokal adalah 1 GB. Ukuran ini mencakup folder /site dan /siteextensions yang disalin dari penyimpanan konten. Ini juga mencakup log dan folder data yang dihasilkan secara lokal.

Untuk meningkatkan batas ini, gunakan pengaturan aplikasi WEBSITE_LOCAL_CACHE_SIZEINMB. Anda dapat meningkatkan ukuran hingga 2 GB (2.000 MB) per aplikasi. Perlu diingat bahwa ukuran cache yang lebih besar meningkatkan waktu untuk memuat cache.

Praktik terbaik untuk menggunakan cache lokal

Kami merekomendasikan menggunakan cache lokal bersama dengan fitur lingkungan penahapan.

Proses berikut mewakili praktik terbaik untuk menggunakan cache lokal:

  1. Tambahkan pengaturan aplikasi sticky WEBSITE_LOCAL_CACHE_OPTION dengan nilai Always ke slot produksi Anda. Jika Anda menggunakan WEBSITE_LOCAL_CACHE_SIZEINMB, tandai juga pengaturan tersebut sebagai pengaturan permanen untuk slot produksi.

  2. Buat slot penahapan dan terbitkan ke slot tersebut. Biasanya, Anda tidak mengatur slot penahapan untuk menggunakan cache lokal, karena hal ini membantu menciptakan siklus hidup build/deploy/test yang mulus, sambil tetap memberikan keuntungan dari cache lokal untuk slot produksi.

  3. Uji website Anda di slot pengujian.

  4. Setelah siap, lakukan operasi pertukaran antara slot penahapan dan produksi.

Pengaturan lengket terhubung dengan slot. Ketika slot penahapan ditukar menjadi produksi, slot tersebut mewarisi pengaturan aplikasi cache lokal. Slot produksi yang baru saja ditukar beroperasi terhadap cache lokal setelah beberapa menit dan dipanaskan selama proses pemanasan slot. Setelah pertukaran selesai, slot produksi Anda beroperasi dengan cache lokal.

Tanya jawab umum

Bagaimana jika saya melebihi batas ukuran untuk cache lokal?

Jika file yang disalin melebihi batas ukuran untuk cache lokal, aplikasi akan beralih kembali membaca dari share jarak jauh. Tabel berikut ini memperlihatkan detailnya.

Ukuran cache lokal File yang disalin Hasil
≤ 2 GB ≤ ukuran cache lokal Membaca dari cache lokal.
≤ 2 GB > ukuran lokal cache Membaca dari berbagi jarak jauh.

Operasi penyebaran dan pertukaran mungkin gagal karena kesalahan.

Bagaimana cara mengetahui apakah aplikasi saya dapat memperoleh manfaat dari cache lokal?

Cache lokal cocok jika semua kondisi ini berlaku:

  • Aplikasi Anda memerlukan penyimpanan konten yang andal dan berkinerja tinggi.
  • Aplikasi Anda tidak menggunakan penyimpanan konten untuk menulis data penting saat runtime.
  • Ukuran totalnya kurang dari 2 GB.

Untuk memeriksa ukuran total folder /site dan /siteextensions Anda, Anda dapat menggunakan ekstensi situs Azure Web Apps Disk Usage.

Bagaimana cara mengetahui apakah situs saya beralih menggunakan cache lokal?

Saat Anda menggunakan cache lokal dengan lingkungan penahapan, operasi pertukaran tidak selesai sampai cache lokal dihangatkan. Untuk memastikan bahwa situs Anda berjalan menggunakan cache lokal, periksa variabel lingkungan dari proses pekerja WEBSITE_LOCALCACHE_READY. Untuk memeriksa variabel ini di berbagai instans, lihat instruksi Kudu untuk variabel lingkungan proses pekerja.

Mengapa aplikasi saya tidak mencerminkan perubahan yang baru diterbitkan?

Jika aplikasi Anda menggunakan cache lokal, Anda harus memulai ulang situs untuk memuat perubahan terbaru. Jika Anda lebih suka tidak menerbitkan perubahan langsung ke situs produksi Anda, pertimbangkan untuk menggunakan slot penyebaran seperti yang dijelaskan di bagian sebelumnya tentang praktik terbaik.

Nota

Opsi penerapan "run from package" tidak kompatibel dengan fitur cache lokal.

Di mana log saya?

Saat Anda menggunakan cache lokal, struktur folder log dan data Anda sedikit berubah. Subfolder sekarang ditempatkan di dalam folder yang diberi nama dengan identifikasi VM unik dan stempel waktu. Masing-masing folder ini sesuai dengan instans VM tempat aplikasi sedang atau sedang berjalan.

Mengapa aplikasi saya masih dimulai ulang dengan cache lokal diaktifkan?

Cache lokal membantu mencegah menghidupkan ulang aplikasi terkait penyimpanan. Namun, aplikasi Anda mungkin masih dapat dimulai ulang kembali selama peningkatan infrastruktur yang direncanakan pada mesin virtual (VM). Secara keseluruhan, Anda diharapkan akan melihat lebih sedikit restart ketika cache lokal diaktifkan.

Apakah cache lokal mengecualikan direktori apa pun agar tidak disalin ke drive lokal yang lebih cepat?

Selama proses penyalinan, folder apa pun bernama repository dikecualikan. Perilaku ini berguna dalam skenario di mana konten situs Anda menyertakan repositori kontrol sumber yang tidak Anda butuhkan untuk operasi sehari-hari.

Bagaimana cara menghapus log cache lokal setelah operasi manajemen situs?

Untuk menghapus log cache lokal, hentikan dan mulai ulang aplikasi. Tindakan ini menghapus cache sebelumnya.

Mengapa App Service menampilkan file yang disebarkan sebelumnya setelah menghidupkan ulang saat cache lokal diaktifkan?

Jika file yang sudah diunggah sebelumnya muncul kembali setelah memulai ulang, periksa keberadaan pengaturan aplikasi WEBSITE_DISABLE_SCM_SEPARATION=true. Menyetting ini mengakibatkan pendistribusian melalui Kudu menulis ke VM lokal, bukan ke penyimpanan persisten. Untuk menghindari situasi ini, ikuti praktik terbaik yang disebutkan sebelumnya dan lakukan penyebaran ke slot penahapan yang tidak mengaktifkan cache lokal.

  • Variabel Lingkungan dan Pengaturan Aplikasi di Azure App Service