تحتوي المجموعة المدمجة من كائنات التطبيق على أنواع بسيطة من المحتويات ، والتي يمكن استخدامها عن طريق التطبيقات الافتراضية ("المفتاح"). فيما يلي بعض التجارب في صنع ذاكرة التخزين المؤقت عن طريق المحتويات والكائنات الثابتة لكائنات تطبيق ASP JavaScript. دعنا نتعلم المزيد عنها أدناه!
عند استخدام application.contents ، يمكنك فقط استخدام تلك القبيحة مثل:
لـ (var i = 0 ؛ i <15000 ؛ i ++) {
application.lock () ؛
// application.contents (i) = "sdfdsffdsaf" ؛
التطبيق (i) = "sdfdsffdsaf" ؛
application.unlock () ؛}
هنا أقوم بتخزين سلاسل 1.5W في التطبيق.
بعد استخدام Application.StaticObjects بدلاً من ذلك:
حدد القاموس باعتباره ثابتًا لتخزين البيانات ، لأن StaticObject لا يسمح بالوصول المباشر.
<كائن معرف = "dict" runat = "server" scope = "application" program = "scripting.dictionary"> </bomust>
البرمجة النصية. التصرف نفسه سريع للغاية ولن يكون له تأثير كبير على مقارنة سرعة جمع staticObjects.
سرعة القاموس:
var d = new ActivexObject ("scripting.dictionary") ؛
لـ (var i = 0 ؛ i <15000 ؛ i ++) {
d.item (i) = "sdfdsffdsaf" ؛}
1.5W الاستيفاء ، 172ms
بالطبع ، الكائن المخصص var d = new Object () ؛ D [i] = .. أسرع ، 1.5 واط مرات فقط تكلف 80-90ms ، ولكن الوظيفة أضعف بكثير ، لذلك لا تزال تستخدم القاموس.
انظر الاختبار الرسمي أدناه
لـ (var i = 0 ؛ i <15000 ؛ i ++) {
application.lock () ؛
application.StaticObjects ("dict"). البند (i) = "sdfdsffdsaf" ؛
application.unlock () ؛}
الوقت طالما 6953ms. يُحكم في البداية أن سرعة الوصول لمجموعة StaticObjects لا يمكن أن تلبي متطلبات ذاكرة التخزين المؤقت. هذه السرعة هي نفس الوقت الذي يقرأ فيه ADO OLEDB SQL Server 2000.
ومع ذلك ، لا أخطط للتخلي على الفور ، لأن ميزة StaticObjects هي أنه يمكنه تخزين الكائنات ، ويمكن للقاموس أيضًا تخزين كائنات أخرى ، والتي يمكن استخدامها ككائنات ذاكرة التخزين المؤقت ، وليس فقط البيانات.
أضع كائنًا في Application.StaticObjects ("Dict"):
application.StaticObjects ("dict"). البند ("O") = new Object () ؛
لـ (var i = 0 ؛ i <15000 ؛ i ++) {
application.lock () ؛
Application.StaticObjects ("dict"). البند ("O") [i] = "sdfdsffdsaf" ؛
application.unlock () ؛}
6656ms ، أسرع قليلا. طبقة أخرى من الكائن لا تبطئ السرعة. السرعة البطيئة ليست بسبب الهيكل المعقد ، ولكن بسبب احتلال الوصول إلى الثابتة.
مرجع ما قبل المتجر
var t = application.staticObjects ("dict") ؛
لـ (var i = 0 ؛ i <15000 ؛ i ++) {
application.lock () ؛
T.Item ("O") [i] = "sdfdsffdsaf" ؛
application.unlock () ؛}
3094ms ، خفضت بنجاح الوقت بأكثر من النصف. ماذا لو كانت الاستراتيجية المسبقة لإنقاذها في JS هي أيضًا لتوفير T.Item ("O")؟
var t = application.staticObjects ("dict"). البند ("O") ؛
لـ (var i = 0 ؛ i <15000 ؛ i ++) {
application.lock () ؛
t [i] = "sdfdsffdsaf" ؛
application.unlock () ؛}
125ms ، نجح أخيرًا ، نصف التطبيق. يبدو أن الوقت يتم إنفاقه في الغالب في الحصول على "مراجع" ، بدلاً من حماية منطقة الذاكرة الثابتة ببطء. تتميز الثابتة بتكوين تدابير أمنية أفضل من المحتويات لأنه يجب تخزين الكائنات.
الاعتماد على الوظائف القوية للقاموس ، وتغليفه بشكل مناسب ، والوصول إليه باستخدام طرق شائعة مثل PUT () ، GET () ، يحتوي على () ، وما إلى ذلك ، إنه ذاكرة تخزين مؤقت قوية.
/// ملاحظة
أنا مغلف مكون .SCT ؛ كتبه ASP JavaScript ، أرسله إذا كان لديك وقت ، لذلك سأكون هنا اليوم.
تم اختبار السرعة التي أشار إليها Contens و StaticObjects. كانت 0 مللي ثانية في 20 مرة ، و 100 مرة كانت السرعة حوالي 5 مرات ، و 500-1500 مرة هي 10 أضعاف فرق السرعة. ومع ذلك ، فإن الوصول بعد الاستحواذ لن يتأثر.
يتم تقديم بعض التجارب في صنع ذاكرة التخزين المؤقت في كائنات تطبيق ASP JavaScript و staticObjects لك هنا. بعد قراءة هذا ، هل ستستفيد كثيرًا؟