سؤال

أنا بناء PHP موقع, لكنه الآن فقط PHP أنا باستخدام نصف دزينة أو نحو ذلك يشمل على صفحات معينة.(أنا ربما سوف تستخدم بعض استعلامات قاعدة البيانات في نهاية المطاف.)

بسيطة include() تصريحات مصدر قلق بالنسبة السرعة أو زيادة ، بدلا ثابت HTML?ما هي أنواع الأشياء التي تميل إلى التسبب في موقع تعثر?

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

المحلول

بالمعنى الدقيق للكلمة ، على التوالي HTML سوف تخدم دائما أسرع من جانب الخادم النهج منذ الخادم لا يجب أن تفعل أي تفسير القانون.

للإجابة على السؤال الأكبر ، هي عدد من الأشياء التي سوف تتسبب في موقع الويب الخاص بك إلى مستنقع أسفل ؛ لا يوجد محددة عتبة عندما الكود هو الذي يسبب المشكلة مقابلPHP.(نضع في اعتبارنا أن الكثير من ياهو المواقع PHP-مدفوعة ، لذلك لا أعتقد أن PHP لا يمكن تغيير حجم).

شيء واحد أنا لاحظت أن PHP يحركها المواقع التي هي أبطأ هي تلك التي تشمل أكثر من الضروري عرض صفحة معينة.بورصة مصر (oscommerce.com) هي واحدة من الأكثر شعبية PHP يحركها عربات التسوق.لديه عادة سيئة ، ومع ذلك ، بما في ذلك جميع الوظائف الأساسية (فقط في حالة الحاجة) في كل صفحة واحدة.لذلك حتى لو كنت لا تحتاج إلى عرض على 'معلومات مربع', وظيفة يتم تحميلها.ومن ناحية أخرى ، هناك العديد من أطر PHP هناك (مثل يتوفر cakephp, Symfony و CodeIgniter) أن تأخذ 'تحميله كما كنت في حاجة إليها' النهج.

أنصح التالية:

  1. لا وتشمل وظائف أكثر مما تحتاج لصفحة معينة
  2. الحفاظ على قاعدة مهام منفصلة (استخدام MVC النهج عندما يكون ذلك ممكنا)
  3. استخدام require_once بدلا من إدراج إذا كنت تعتقد أنك سوف يكون متداخلة تشمل (على سبيل المثالالصفحة يتضمن الملف ب والذي يتضمن الملف C).هذا سوف تجنب بما في ذلك نفس الملف أكثر من مرة.فإنه سيتم أيضا إيقاف العملية إذا كان الملف لا يمكن العثور عليها ، وبالتالي المساعدة في استكشاف الأخطاء وإصلاحها عملية ;)
  4. ذاكرة التخزين المؤقت صفحات ثابتة مثل HTML إذا كان ذلك ممكنا - لتجنب الاضطرار إلى إعادة التوزيع عندما الأشياء لا تتغير

نصائح أخرى

تشمل بالتأكيد() أبطأ من صفحات ثابتة.ومع ذلك, مع النظم الحديثة أنت ليس من المرجح أن نرى هذا بمثابة عنق الزجاجة لفترة طويلة - إذا من أي وقت مضى.فوائد استخدام يشمل الحفاظ على الأجزاء المشتركة من موقع الويب الخاص بك ما يصل إلى التاريخ تفوق صغيرة الأداء في رأيي (وجود الملاحة مختلفة على صفحة واحدة لأنك نسيت أن التحديث يؤدي إلى تجربة المستخدم سيئة ، وبالتالي مشاعر سيئة عن موقعك//شركة أيا كان).

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

يبدو أنك تشارك في قليلا من السابق لأوانه الأمثل.إذا كان التطبيق لا تبنى, في حين أن المخاوف الأداء الجيد أن تكون على علم ، الشاغل الرئيسي الخاص بك ينبغي أن يكون الحصول على التطبيق مكتوبة.

ويشمل هي حقيقة من حقائق الحياة.لا تقلق بشأن عدد تقلق بشأن حفظ التعليمات البرمجية الخاصة بك منظمة تنظيما جيدا (الكمثرى بنية المجلد هو شيء جميل, إذا كنت لا تعرف ما أنا أتحدث عن ننظر في هيكل الإطار زند ملفات فئة).

التركيز على الحصول على طلب خطي مع كمية معقولة من التجريد.المجموعة كل من DB يدعو إلى فئة (أو فئات) بحيث يمكنك تقليل رمز الازدواجية (قبلة مبادئ كل) و عندما يحين وقت ريفاكتور وتحسين استفساراتكم هم في موقع مركزي.أيضا على البدء في بعض اختبار وحدة لمنع الانحدار.

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

وإن كان في الوقت نفسه, أفضل الاقتراحات ننظر من خلال php.net دليل والتأكد إذا كان هناك بنيت في وظيفة تفعل شيئا ما كنت تحاول القيام به ، واستخدامها!PHP ج-على أساس امتداد سوف يكون دائما أسرع من أي رمز PHP التي يمكنك أن تكتب و سوف يفاجأ مدى ما كنت تحاول القيام به هو القيام به بالفعل.

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

لا يشمل على ما يرام, لا شيء يدعو للقلق هناك.

قد ترغب في التفكير في التغيير والتبديل في إعدادات التخزين المؤقت رؤوس قليلا في بعض نقطة, ولكن إلا إذا كنت الحصول على الزيارات الهامة يجب أن تكون هناك مشكلة.على افتراض أن هذا هو كل بيانات ثابتة حتى يمكن النظر في تحويل الموقع كله إلى HTML ثابتة (أسهل طريقة:كتابة السيناريو أن يستولي على كل صفحة عن طريق خادم الويب و مقالب في مطابقة dir هيكل)

معظم تطبيقات الويب محدودة بسبب سرعة قاعدة البيانات الخاصة بهم (أو أيا كان التخزين الخارجية ، ولكن 9/10 الأوقات التي ستكون قاعدة البيانات), رمز التطبيق نادرا ما تكون مدعاة للقلق ، فإنه لا يبدو مثل كنت تفعل أي شيء عليك أن تقلق بشأنه حتى الآن.

قبل إجراء أي عملية طويلة الأمد القرارات حول كيفية بناء مدونة على موقع الويب الخاص بك ، نوصي أن يمكنك القيام ببعض القراءة على Model-View-Controller تصميم نمط.بينما هناك آخرون هذا واحد يبدو أن تكتسب قدرا كبيرا من الأرض في تطوير الشبكة الدوائر و بالتأكيد سوف يكون حول لفترة من الوقت.قد ترغب في إلقاء نظرة على بعض من غيرها من أنماط التصميم اقترح مارتن فاولر في أنماط من تطبيق المشاريع المعمارية قبل اتخاذ أي قرارات نهائية حول أي نوع من التصميم سوف تناسب احتياجاتك.

اعتمادا على حجم ونطاق المشروع الخاص بك, قد ترغب في الذهاب مع إطار الجاهزة PHP مثل الإطار زند أو PHP على تراكس أو قد تقرر بناء الحل الخاص بك.

وتحديدا فيما يتعلق بتقديم محتوى HTML وأود أن نوصي بشدة أن يمكنك استخدام بعض شكل النموذجيه من أجل الحفاظ على الأعمال التجارية الخاصة بك المنطق منفصلة عن الشاشة المنطق.لقد وجدت أن هذه القاعدة البسيطة في التنمية وفرت لي ساعة من العمل عند واحد أو الآخر في حاجة إلى تغيير.لقد استعملت http://www.smarty.net/">هندى وأنا أعرف أن معظم أطر هناك إما يكون نظام قالب من تلقاء نفسها أو توفير المكونات في الهندسة المعمارية التي تسمح لك لاستخدام الخاص بك الأسلوب المفضل.كما يمكنك البحث في الحلول الممكنة ، نوصي أن يمكنك البحث عن واحد التي هي قادرة على خلق الإصدارات المخزنة مؤقتا.

وأخيرا, إذا كنت تشعر بالقلق إزاء السرعة على نهاية الظهر ثم أود أن نوصي بشدة أن ننظر في سبل للحد من المكالمات الخاصة بك مرة أخرى في نهاية مخزن البيانات (سواء كان ذلك في قاعدة بيانات أو ملفات النظام).في محاولة لتجنب التحميل و تقديم الكثير من المحتوى (ويقول تقرير كبيرة المخزنة في الجدول الذي يحتوي على المئات من الوثائق) في كل مرة.إذا كان ذلك ممكنا البحث عن سبل لجعل واجهة المستخدم تحميل أصغر بت من البيانات في وقت واحد.وإذا كنت قلق على وجه التحديد الفعلي وقت تحميل من محتوى html و CSS أو جافا سكريبت أو غيرها من تبعيات أود أن أوصي بأن عليك مراجعة هذه الاقتراحات من الرجال في ياهو!.

إضافة على ما JayTee ذكر - تحميل وظائف عندما كنت في حاجة إليها.إذا كنت لا تستخدم أي من الأطر التي تفعل ذلك تلقائيا, قد ترغب في النظر في __autoload() وظيفة التي تم تقديمها في PHP5 - في الأساس ، الخاصة بك المنطق يمكن الاستناد إليها عند إنشاء مثيل فئة معينة إذا لم يكن تحميلها بالفعل.هذا يتيح لك فرصة أن تشمل() ملف التي تحدد تلك الفئة على الطلب.

أهم شيء يمكنك القيام به لتسريع التطبيق الخاص بك هو استخدام شفرة تشغيل ذاكرة التخزين المؤقت ، مثل APC.هناك قائمة ممتازة و وصف متاح على ويكيبيديا.

بقدر بسيط يشمل هي المعنية ، يجب الحرص على عدم وتشمل أيضا العديد من الملفات على كل طلب القرص I/O يمكن أن يسبب التطبيق الخاص بك لا مقياس جيد.بضع عشرات يشمل ينبغي أن يكون على ما يرام, لكنه عموما فكرة جيدة أن الحزمة الخاصة بك الأكثر شيوعا الملفات المضمنة في واحد النصي بحيث يكون لديك فقط واحد وتشمل.التكلفة في الذاكرة من وجود عدد قليل من فئات هنا وهناك لا تحتاج إلى تحميلها سوف يكون أفضل من تكلفة القرص I/O بما في ذلك مئات من ملفات أصغر.

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