Kumpulan objek aplikasi bawaan memiliki jenis konten yang sederhana, yang dapat digunakan dengan aplikasi default ("Key"). Di bawah ini adalah beberapa pengalaman dalam membuat cache berdasarkan isi dan objek statis dari objek aplikasi JavaScript ASP. Mari kita pelajari lebih lanjut tentang itu di bawah ini!
Saat menggunakan Application.contents, Anda hanya dapat menggunakan yang jelek seperti:
untuk (var i = 0; i <15000; i ++) {
Application.lock ();
// application.contents (i) = "sdfdsffdsaf";
Aplikasi (i) = "sdfdsffdsaf";
Application.unlock ();}
Di sini saya menyimpan 1.5W string di Application.contents, yang memakan total 234 ms.
Setelah menggunakan application.staticObjects sebagai gantinya:
Tentukan kamus sebagai staticObject untuk menyimpan data, karena staticObject tidak memungkinkan akses langsung.
<object id = "dict" runat = "server" scope = "application" program = "scripting.dictionary"> </object>
Scripting. Diksi itu sendiri sangat cepat dan tidak akan memiliki banyak dampak pada membandingkan kecepatan pengumpulan staticObjects.
Kecepatan kamus:
var d = ActivexObject baru ("Scripting.Dictionary");
untuk (var i = 0; i <15000; i ++) {
d.item (i) = "sdfdsffdsaf";}
1.5W Interpolasi, 172ms
Tentu saja, objek kustom var d = objek baru (); D [i] = .. lebih cepat, 1.5W kali hanya berharga 80-90 ms, tetapi fungsinya jauh lebih lemah, jadi Anda masih menggunakan kamus.
Lihat tes resmi di bawah ini
untuk (var i = 0; i <15000; i ++) {
Application.lock ();
Application.staticObjects ("dict"). Item (i) = "sdfdsffdsaf";
Application.unlock ();}
Waktunya selama 6953ms. Awalnya dinilai bahwa kecepatan akses koleksi staticObjects tidak dapat memenuhi persyaratan cache. Kecepatan ini hampir sama dengan waktu ketika ADO OLEDB membaca SQL Server 2000.
Namun, saya tidak berencana untuk menyerah segera, karena keuntungan staticObjects adalah bahwa ia dapat menyimpan objek, dan kamus juga dapat menyimpan objek lain, yang dapat digunakan sebagai objek cache, bukan hanya data.
Saya menempatkan objek di application.staticObjects ("Dict"):
Application.staticObjects ("dict"). Item ("o") = objek baru ();
untuk (var i = 0; i <15000; i ++) {
Application.lock ();
Application.staticObjects ("dict"). Item ("o") [i] = "sdfdsffdsaf";
Application.unlock ();}
6656ms, sedikit lebih cepat. Satu lapisan objek lagi tidak memperlambat kecepatan. Kecepatan lambat bukan karena struktur yang kompleks, tetapi karena pekerjaan akses statis.
Referensi Dikt Pra-Toko
var t = application.staticObjects ("dict");
untuk (var i = 0; i <15000; i ++) {
Application.lock ();
t.item ("o") [i] = "sdfdsffdsaf";
Application.unlock ();}
3094ms, berhasil mengurangi waktu lebih dari setengahnya. Bagaimana jika strategi pra-hemat di JS juga t.item pra-hemat ("o")?
var t = application.staticObjects ("dict"). item ("o");
untuk (var i = 0; i <15000; i ++) {
Application.lock ();
t [i] = "sdfdsffdsaf";
Application.unlock ();}
125ms, akhirnya berhasil, hanya setengah dari Application.contents. Tampaknya waktu sebagian besar dihabiskan untuk mendapatkan 'referensi', daripada area memori staticObjects yang dilindungi secara perlahan. StaticObjects memiliki langkah -langkah keamanan yang lebih baik daripada konten karena objek perlu disimpan.
Mengandalkan fungsi -fungsi yang kuat dari kamus, dengan tepat merangkumnya, dan mengaksesnya menggunakan metode populer seperti put (), get (), contains (), dll., Ini adalah cache yang kuat.
////Komentar
Saya merangkum komponen .sct; Ditulis oleh ASP JavaScript, mengirimkannya jika Anda punya waktu, jadi saya akan berada di sini hari ini.
Kecepatan yang dirujuk oleh Contens dan staticObject diuji. Itu 0ms dalam 20 kali, 100 kali kecepatannya sekitar 5 kali, dan 500-1500 kali adalah 10 kali perbedaan kecepatan. Namun, akses setelah akuisisi tidak akan terpengaruh.
Beberapa pengalaman dalam membuat cache dalam objek aplikasi ASP JavaScript dan staticObjects diperkenalkan kepada Anda di sini. Setelah membaca ini, akankah Anda mendapat banyak manfaat?