سؤال

وسؤال العمارة العام في Sitecore 6 ...

ودعونا نقول لدينا حالة حيث لدينا 10000 البنود تنفيذ "بيان صحفي" القالب. يتم تخزين هذه المواد في Sitecore في /sitecore/content/home/press/*. على الصفحة الرئيسية لدينا، نحن نرغب في عرض بعض المعلومات المتعلقة 3 أحدث النشرات الصحفية.

ونحن نتطلع لبناء شيء يعادل في SQL:

SELECT TOP 3 * FROM PressReleases ORDER BY ReleaseDate

والقراءة من خلال وثائق الاستعلام Sitecore، يبدو وكأنه غالبية هذا الاستعلام يجب أن تعالج في منطقتنا C # التطبيق. شيء من هذا القبيل:

public Item[] GetRecentPressReleases()
{
   string query = "/sitecore/content/home/press/*";
   Item[] items = Sitecore.Context.Database.SelectItems(query);
   Array.Sort(items, new PressReleaseDateComparer());
   return items.Take(3).ToArray();
}

ويبدو أن العناصر تحميل 10000 Sitecore من قاعدة البيانات في الذاكرة ومن ثم فرزها في كل مرة هو ضرب موقعنا لن يكون مقبولا من منظور الأداء.

هل هناك طريقة أكثر فعالية للتعبير عن هذا الاستعلام؟ أو ينبغي أن تكون مركزة على التخزين المؤقت الانتاج و / أو قبل حسابية؟

هل كانت مفيدة؟

المحلول

وSitecore استعلام (أو استعلام سريع) لا يعتمد الفرز أو أعلى يبني، وبالتالي فإن هذه الأمور يجب أن يتم التعبير عنها في التعليمات البرمجية.

والتركيز على التخزين المؤقت هو شيء جيد. باستخدام معيار Sitecore تقديم التخزين المؤقت هو الطريقة الأبسط، وأنا لا أعتقد أنك بحاجة إلى أي شيء أكثر تعقيدا من ذلك في هذه القضية.

وأنها تساعد على فهم أن Sitecore الاستعلام يمكن حلها إما في SQL أو API مستويات ، والتي لا تؤثر على الأداء ويمكن في بعض الأحيان أن تستخدم لصالحك.

سريعة تم بناء الاستعلام إلى Sitecore 6 و يجعل جميع الاستفسارات تنفذ على مستوى SQL، وزيادة الأداء بشكل كبير. كما أنها لا تدعم الفرز وTOP في الوقت الراهن، لكننا ندرس كيف يمكن إضافتها.

نصائح أخرى

واحد حل ل"أحدث أخبار 10" المشكلة هو استخدام لوسين.

وهذا هو طريقة واحدة للقيام في هذا الشأن .

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top