it-swarm.asia

خطوات لتحسين وورد في ما يتعلق تحميل خادم؟

إلى جانب تثبيت W3 Total Cache أو مكون إضافي آخر للتخزين المؤقت ، ما هي الخطوات التي يمكنني اتخاذها للتأكد من أن الموضوع والموقع يعملان بأسرع وقت ممكن.

80
Paul Sheldrake

هل يمكن تثبيت وورد على Nginx. هناك عدد من الموارد للمساعدة:

بعض معلومات الأداء من هذا الرابط الأخير (والذي يبدو أنه إعداد مختلف قليلاً عن الآخر):

لذلك قررت أن أضع وكيلًا أمام WordPress على ذاكرة التخزين المؤقت الثابتة قدر الإمكان. يتم تقديم جميع الزيارات غير المصادق عليها مباشرةً من ذاكرة التخزين المؤقت لملف nginx ، مع أخذ بعض الطلبات (مثل إنشاء موجز ويب لـ RSS) من 6 صفحات/ثانية إلى 7000 صفحة/ثانية. العوف. يتعامل Nginx أيضًا مع التسجيل و gzipping ، مما يترك أباتشي الخلفية الأثقل لفعل ما يفعلونه بشكل أفضل: لا تقدم صفحات وورد ديناميكية إلا عند الحاجة.

...

على nginx - إنه فعال للغاية ، إنه أمر مخيف. لم أشاهدها أبدًا وهي تستخدم أكثر من 10 إلى 15 ميجابايت من RAM ومضة من وحدة المعالجة المركزية ، حتى في ظل العبء الثقيل لدينا. لا تكمن الرسوم البيانية للعقد الخاصة بنا: لقد قللنا من متطلبات الذاكرة إلى النصف ، وضاعفنا من إنتاجية الشبكة الصادرة واستقرنا تمامًا في حملنا. لم نواجه أية مشاكل منذ أن أنشأنا هذا.

31
Travis Northcutt

عيّن انتهاء صلاحية العميل لأشياء مثل css والصور وجافا سكريبت وغيرها التي لا تحتاج إلى إعادة تنزيلها لكل عرض صفحة. هذا ، إلى حد بعيد ، أحدث فرقًا كبيرًا في أوقات تحميل موقعي. أسرع تنزيل هو التنزيل الذي لم يحدث أبدًا ...

# BEGIN Expire headers
<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresDefault "access plus 7200 seconds"
  ExpiresByType image/x-icon "access plus 2592000 seconds"
  ExpiresByType image/jpeg "access plus 2592000 seconds"
  ExpiresByType image/png "access plus 2592000 seconds"
  ExpiresByType image/gif "access plus 2592000 seconds"
  ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
  ExpiresByType text/css "access plus 2592000 seconds"
  ExpiresByType text/javascript "access plus 2592000 seconds"
  ExpiresByType application/x-javascript "access plus 2592000 seconds"
  ExpiresByType text/html "access plus 7200 seconds"
  ExpiresByType application/xhtml+xml "access plus 7200 seconds"
</IfModule>
# END Expire headers

# BEGIN Cache-Control Headers
<IfModule mod_headers.c>
  <FilesMatch "\\.(ico|jpe?g|png|gif|swf|gz)$">
    Header set Cache-Control "max-age=2592000, public"
  </FilesMatch>
  <FilesMatch "\\.(css)$">
    Header set Cache-Control "max-age=2592000, public"
  </FilesMatch>
  <FilesMatch "\\.(js)$">
    Header set Cache-Control "max-age=2592000, private"
  </FilesMatch>
<filesMatch "\\.(html|htm)$">
Header set Cache-Control "max-age=7200, public"
</filesMatch>
# Disable caching for scripts and other dynamic files
<FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>
</IfModule>
# END Cache-Control Headers

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

RewriteEngine on
#Check to see if browser can accept gzip files. If so and we have it - serve it!
ReWriteCond %{HTTP:accept-encoding} gzip
RewriteCond %{HTTP_USER_AGENT} !Safari
#make sure there's no trailing .gz on the url
ReWriteCond %{REQUEST_FILENAME} !^.+\.gz$
#check to see if a .gz version of the file exists.
RewriteCond %{REQUEST_FILENAME}.gz -f
#All conditions met so add .gz to URL filename (invisibly)
RewriteRule ^(.+) $1.gz [QSA,L]

هذه مجرد إجابة خام. هناك الكثير من الاختلافات حول هذا الموضوع. لقد قمت بالتدوين حول هذا الموضوع وأضفت القليل من الإشارات إلى المزيد من المقالات المتعمقة في http://icanhazdot.net/2010/03/23/some-wordpress-stuff/ . اقرأ هذا ، والأهم من ذلك ، المراجع التي أشرت إليها - إنها موارد جيدة.

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

البرنامج المساعد الذي وجدته مفيدًا جدًا هو wp-minify . الشيء المراد مشاهدته مع هذا هو أنه يجب عليك استبعاد العناصر الخاصة بالصفحة (نموذج الاتصال ، شريط تمرير الصفحة الأمامية ، إلخ) حتى لا تقوم بإعادة تنزيل مجموعة كاملة من css ، JS ، إلخ لكل صفحة. إنها طريقة جيدة لتقليل وجمع وضغط خط الأساس الخاص بك CSS و JS وما إلى ذلك. إنها تخفض طلبات المتشعب كثيرًا. Wp-minify يلعب بشكل جيد مع supercache وأيضًا مع رؤوس انتهاء الصلاحية التي قمت بالتفصيل أعلاه.

استخدم Yslow في Firebug (Firefox) أو ما شابه ذلك لمراقبة طلبات http الخاصة بك وما هو وما هو غير مضغوط. ألقِ نظرة على رؤوس انتهاء الصلاحية هناك أيضًا. سترى قريبًا ما يمكنك تحسينه.

26
CAD bloke

قلل من عدد الإضافات التي تقوم بتشغيلها إلى ما تحتاج إليه فقط. لا سيما أن تكون على بينة من المكونات الإضافية التي تضيف javascript و CSS code على كل صفحة يتم تحميلها ، حتى عندما لا يتم استخدام هذا الرمز على الصفحة.

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

قم بتكوين W3TC لاستخدام CDN (مثل Amazon CloudFront ، أو أي من الآخرين المدعومين بواسطة W3TC).

معرفة ما إذا كانت خيارات Minify تعمل من أجلك (بعض الإضافات تنشئ js/css لن تقلل بشكل جيد ، لذا تأكد من اختبار موقعك بعد تنشيط ميزة minify).

إذا كان لديك تحكم كامل بخادم MySQL ، فتأكد من تشغيل query_cache. استخدم MySQL tuning script لإيجاد طرق أخرى لتحسين تهيئة قاعدة البيانات الخاصة بك.

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

21
Dougal Campbell

تشغيل memcached واستخدم ذاكرة التخزين المؤقت للكائن لتقليل عدد استعلامات قاعدة البيانات. هذا يخزن البيانات من قاعدة البيانات ، بدلا من الصفحات. لست متأكداً مما إذا كان w3-total-cache يقوم بهذا بالفعل.

تأكد من تشغيل ذاكرة التخزين المؤقت للشفرة مثل APC . (هناك العديد من أكثر المتاحة.)

14
Annika Backstrom

بالإضافة إلى استخدام مكون إضافي للتخزين المؤقت للقرص مثل wp-cache ، ضع مدونتك على وحدة تخزين مضيف بها خاصية "noatime". خلاف ذلك ، SSH في مضيفك (إذا كان مضيف الويب الخاص بك يوفر ذلك) وقم بتشغيل هذا الأمر بشكل روتيني على ملفاتك كل بضعة أيام:

chattr -R +A ~/*

~/* يعني "ملفاتي تحت الدليل الرئيسي الخاص بي". يمكنك تغيير هذا المسار كما تراه مناسبا. يمكنك أيضًا إعداد هذا على وظيفة cron في cpanel إذا كان مضيف الويب الخاص بك يوفر ذلك.

لمزيد من المعلومات حول خاصية atime ، راجع هذا . انه يسرع قرص لينكس قراءة الأداء إلى حد كبير.

في بعض الأحيان يتم التوصل إلى موقعك بواسطة العناكب. يمكنك استخدام أداة مثل SpyderSpanker أو Chennai Central لتصفية العناكب التي لا تساعد في ترتيب المزيد من تصنيف الصفحات إلى موقعك وإبطاءها ، ثم خنق العناكب الجيدة (مثل Google ، Bing ، إلخ) عن طريق إرسالها عشوائيًا HTTP 304 لم يتم تعديل الرسائل.

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

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

8
Volomike

بعض الإجابات من أعلى رأسي:

1) قلل من عدد طلبات HTTP التي يتعين على المتصفح إجراؤها على مضيفك عن طريق وصل JavaScript و CSS حيثما أمكن/عمليًا.

2) قم بإلغاء تحميل أكبر قدر ممكن من صورتك/وسائطك التي تخدم شبكات CDN للجهات الخارجية ، خاصة إذا كنت تستخدم استضافة مشتركة.

3) حاول تقليل عدد المشاركات التي تعرضها على الصفحة الأولى من أجل تقليص إجمالي وقت العرض.

3 أ) حاول استخدام سمة تعرض بعض المنشورات المميزة بالكامل على الصفحة الأولى وجميع المنشورات الأقدم الأخرى كمقتطفات.

7
ZaMoose

يوفر لك التخزين المؤقت لقائمة WordPress زيادة في الأداء. خاصة إذا كان لديك الكثير من الصفحات أو بنية قوائم عملاقة ، فيجب مراعاة ذلك.

تفعل ذلك في 2 خطوات سهلة. في البداية ، قم بإنشاء وظيفة تحصل على القائمة أو تنشئها ، بدلاً من الاتصال بـ wp_nav_menu مباشرة.

function get_cached_menu( $menuargs ) {

    if ( !isset( $menuargs['menu'] ) ) {

        $theme_locations = get_nav_menu_locations();
        $nav_menu_selected_id = $theme_locations[$menuargs['theme_location']];
        $termslug = get_term_by( 'id', $nav_menu_selected_id, 'nav_menu' );
        $transient = 'menu_' . $termslug->slug . '_transient';

    } else {

        $transient = 'menu_' . $menuargs['menu'] . '_transient';

    }


    if ( !get_transient( $transient ) ) { // check if the menu is already cached

        $menuargs['echo'] = '0'; // set the output to return
        $this_menu = wp_nav_menu( $menuargs ); // build the menu with the given $menuargs
        echo $this_menu; // output the menu for this run
        set_transient( $transient, $this_menu ); // set the transient, where the build HTML is saved

    } else {

        echo get_transient( $transient ); // just output the cached version

    }

}

في نسختك ، استبدل wp_nav_menus بـ get_cached_menu. الآن ، في كل مرة تسمى القائمة ، لديك قاعدة بيانات واحدة بدلاً من Menubuilding بأكملها.

لا تتغير القوائم كثيرًا - لكن عليك أيضًا ربط الإجراء wp_update_nav_menu لحذف العابرين القدامى.

هل لأنها مثل هذا:

add_action('wp_update_nav_menu', 'my_delete_menu_transients');

function my_delete_menu_transients($nav_menu_selected_id) {

    $termslug = get_term_by( 'id', $nav_menu_selected_id, 'nav_menu' );

    $transient = 'menu_' . $termslug->slug . '_transient';

    delete_transient( $transient ); 

}

سيتم إنشاء القائمة في المرة التالية التي يتم فيها استدعاء الصفحة - واستخدام النسخة المخبأة حتى يقوم شخص ما بتحديث القائمة مرة أخرى.

نسخة محدثة

شكرًاhelgatheviking على الإشارة إلى وجود خطأ بين الرخويات والمعرفات. لقد قمت بتحديث الوظائف بحيث تعمل مع كل من theme_position و menu (لمكالمة مباشرة من القائمة).

يتم حفظ القوائم دائمًا باسم القائمة ، وليس الموضع في السمة.

7
fischi

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

يمكن العثور على جزء من كود فئة قاعدة البيانات في trac WordPress ، ولم يجعله في صلب ( التذاكر # 11799 وما يتصل بها ).

5
hakre

بالنسبة إلى الموقع الذي يتم الاتجار به بشكل كبير ، يجب عليك ضبط جميع مخازن MySQL للمحتوى الموجود الآن. بغض النظر عن إصدار WordPress ، يمكن أن تحسب طبقة MySQL تكوينها .

في الواقع ، إذا كان لديك بيانات InnoDB دون تمكين innodb_file_per_table ، فأنت بحاجة إلى تنظيف InnoDB عن طريق تقسيم كل جدول إلى مساحة الجداول الفعلية الخاصة به . من الممكن إجراء ضبط MySQL لائق حتى لو كان لديك أجهزة محدودة . هناك العديد من السيناريوهات للقيام بتحسينات InnoDB .

IMHO ، لا يمكنك التخطيط لإعدادات جيدة لـ my.cnf دون معرفة مقدار البيانات المطلوب تكوينها. يجب عليك تحميل مجموعة بيانات حالية من الإنتاج بشكل دوري إلى بيئة مرحلية ، وإجراء تحسينات ، وإخراج الأرقام لتكوينها في my.cnf لخادم الإنتاج.

4
RolandoMySQLDBA

لقد تحدثت مؤخرًا عن هذا الموضوع في WordCamp Houston . جميع التوصيات المذكورة أعلاه رائعة والشيء المهم هو التأكد من أن جميع عناصر الواجهة الأمامية مُحسّنة تمامًا ، ثم يمكنك البدء في العمل على مشكلات التخزين المؤقت وأداء الخادم.

سيجعل العرض التدريجي صفحاتك تشعر بشكل أسرع لأن المستخدم سيرى محتوى الصفحة قبل أن يتم تحميلها بالكامل. للقيام بذلك ، تأكد من أن أي js blocking في أسفل الصفحة وأن css في الأعلى.

أيضًا إذا كنت تستخدم الكثير من أزرار الوسائط الاجتماعية ، فيمكنك تخصيص البرامج النصية لتحميلها في iframe بعد تحميل الصفحة بالكامل. كتبت تعليميًا حول كيفية القيام بذلك من خلال زر TweetMeMe re Tweet (أصبح الآن قديمًا منذ أن أصدر Twitter زر إعادة تغريد الخاص به) ولكن لا يزال من الممكن تطبيقه على أزرار المشاركة الأخرى.

للحصول على أداء الخادم ، انظر إلى Nginx كوكيل أمامي للمحتوى الثابت مع Apache الذي يتعامل مع الأحمال الثقيلةPHP ورفع MySQL.

3
Chris_O

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

3
Scott M.

نظرًا لعدم ذكر أي شخص حتى الآن ، فإن أحد أهم الخطوات لتحسين أداء الخادم مع أي إعداد LAMP هو التبديل إلى مؤشر ترابط العامل Apache و mod_fcgid.

تم تحرير 500 ميجابايت من الذاكرة على الخادم الخاص الظاهري.

2
nottinhill

دليل لفحص البرنامج المساعد تبطئ

هناك مكون إضافي بسيط جميل يسمى وقت تحميل الصفحة ، والذي يضيف مؤقتًا إلى تذييل الصفحة. في الواقع أربعة أسطر فقط من التعليمات البرمجية:

<?php
function ur_pageload_footer() {
    printf(__('Page in %s seconds', 'pageload'), timer_stop());
}
add_action('wp_footer', 'ur_pageload_footer')

ثم:

  1. إنشاء جدول بيانات
  2. اذكر كل ما لديك من الإضافات النشطة ووضعها هناك
  3. قم بتحديث الصفحة ثلاث مرات مع ملاحظة وقت تحميل الصفحة كل منعطف
  4. انتقل من خلال الإضافات الخاصة بك واحدا تلو الآخر إلغاء تنشيطها
  5. كرر الخطوة 3
  6. لاحظ الترتيب الذي قمت بإلغاء تنشيط المكونات الإضافية

يجب أن يبدو جدول البيانات الخاص بك كما لو كان

+-------+-------+-------+-------+--------+
| Run 1 | Run 2 | Run 3 | Order | Plugin |

لذا إذا زاد وقت استجابة الصفحة بشكل ملحوظ بعد إلغاء تنشيط المكون الإضافي ، فيمكنك معرفة ما إذا كان يمكنك تجنب هذا المكون الإضافي.

لقد وجدت اثنين من الإضافات التي تسببت في إبطاء "كبير" mqtranslate و (القديم إلى حد ما ولكن جيد) متعدد المكونات الملاحة .

1
icc97