ASP.NET Masterpages وحالة العرض
-
03-07-2019 - |
سؤال
وأنا أتطلع لتحسين أداء موقعي، ليس لأنه يجري بشكل سيئ ولكن فقط كعملية العامة. اقتراح المعتاد لمواقع asp.net هو إزالة حالة العرض كلما كان ذلك ممكنا. وأعتقد أن هذا يمكن أن تقوم به كل عنصر تحكم على صفحة على حدة أو لصفحة كاملة.
وسؤالي هو إذا كان يمكنني تعطيل حالة العرض الصفحة وهذا يتوقف على حالة العرض من الضوابط على masterpage (كما أفهمها وmasterpage هو في الواقع عنصر تحكم في الصفحة).
المحلول
نعم، الصفحة هو المنشئ للتدفق الصفحة. وهكذا، تعطيل حالة العرض لصفحة يأخذ حالة العرض مما يجعل من عملية OnInit. ومن شأن السؤال الأفضل هو لماذا تعطيل حالة العرض للصفحة الرئيسية تفعل الشيء نفسه؟
نصائح أخرى
وهناك طريقة سهلة لتقليص كل ما تبذلونه من حالة العرض.
والخطوة 1. إنشاء فئة جديدة التي تبدو مثل هذا:
Imports System
Imports System.Web.UI
Public Class SessionPageStateAdapter
Inherits System.Web.UI.Adapters.PageAdapter
Public Overrides Function GetStatePersister() As System.Web.UI.PageStatePersister
Return New SessionPageStatePersister(Page)
End Function
End Class
والخطوة 2. إضافة مجلد App_Browsers
إلى المشروع.
والخطوة 3. في مجلد App_Browsers
الجديد الخاص بك، إضافة ملف default.browser
الجديد الذي يبدو مثل هذا.
<browsers>
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.Page" adapterType="[YourNamespaceGoesHere].SessionPageStateAdapter" />
</controlAdapters>
</browser>
</browsers>
عند تشغيل صفحاتك الآن، يجب أن تجد انخفض حجم حالة العرض لبضعة بايت. حالة العرض وقراءتها الطبقة SessionPageStateAdapter قبل ان يحصل على عمل لمتصفح ويحتفظ به على الملقم في حالة جلسة العمل. بت من حالة العرض الذي لا يزال يحصل على إرسالها إلى العميل هو مجرد المعرف الذي يتم استخدامه لإعادة تشكيل حالة العرض الأصلي عند الصفحة يحصل على نشر مرة أخرى إلى الخادم.
وقد تجد هذه المادة مفيدة:
http://msdn.microsoft.com/en-us/library/ms972976. ASPX
ومجرد ملاحظة سريعة على الجانب قبل تحسين الموقع، هل الأمثل الملقم والتأكد من ملف GZipped كافة الملفات قبل إرسالها.
إذا لم يكن هذا سوف تحصل على دفعة لطيفة حتى قبل ان تبدأ العبث الصفحة.