सर्वर लोड के संबंध में वर्डप्रेस का अनुकूलन करने के लिए कदम?


81

W3 Total Cache या किसी अन्य कैशिंग प्लगइन को स्थापित करने के अलावा, मैं यह सुनिश्चित करने के लिए क्या कदम उठा सकता हूं कि मेरी थीम और साइट जितनी तेजी से चल सके।


यदि आप वीपीएस पर अपनी साइट चलाते हैं, तो आपको रेडिस कैश का प्रयास करना चाहिए।
अहममेटलफू

जवाबों:


32

आप Nginx पर वर्डप्रेस स्थापित कर सकते हैं। मदद करने के लिए कई संसाधन हैं:

उस अंतिम लिंक से कुछ प्रदर्शन की जानकारी (जो अन्य की तुलना में थोड़ी भिन्न होती है):

इसलिए मैंने यथासंभव स्टैटिक कैश के लिए वर्डप्रेस के सामने एक प्रॉक्सी लगाने का फैसला किया। सभी गैर-प्रमाणित ट्रैफ़िक को सीधे nginx फ़ाइल कैश से परोसा जाता है, 6 पेज / सेकंड से 7000+ पेज / सेकंड तक कुछ अनुरोध (जैसे कि आरएसएस फ़ीड पीढ़ी) ले रहा है। ऊफ। नग्नेक्स लॉगिंग और गिपिंग को भी संभालता है, जो वे सबसे अच्छा करते हैं, उसे करने के लिए भारी बैकएंड एपेक को छोड़ते हैं: केवल जरूरत पड़ने पर डायनामिक वर्डप्रेस पृष्ठों की सेवा करते हैं।

...

Nginx पर - यह इतना कुशल है यह डरावना है। मैंने कभी नहीं देखा है कि यह हमारे सबसे भारी भार के तहत 10 से 15 मेगावॉट से अधिक रैम और सीपीयू के एक ब्लिप का उपयोग करता है। हमारे गैंग्लिया रेखांकन झूठ नहीं हैं: हमने अपनी मेमोरी आवश्यकताओं को आधा कर दिया, हमारे आउटगोइंग नेटवर्क थ्रूपुट को दोगुना कर दिया और हमारे लोड को पूरी तरह से समतल कर दिया। इसे स्थापित करने के बाद से हमें मूल रूप से कोई समस्या नहीं है।


किसी को भी Nginx का उपयोग करने की गति बचत पर कोई आँकड़े हैं?
माइक ली

माइक, मैंने एक और लिंक जोड़ा, और उस पोस्ट से कुछ जानकारी।
ट्रैविस नॉर्थकट

मैंने अपना मुख्य ब्लॉग 1G सर्वर से अपाचे से 512M सर्वर पर चलने वाले Nginx से स्थानांतरित किया। रैम में कमी के बावजूद अधिक सुचारू रूप से चलता है। बेशक, मेरे पास 1G सर्वर पर चलने वाली अन्य सेवाएं हैं, हालांकि (ईमेल, इमैप, मेलमैन, कई अन्य कम ट्रैफ़िक साइट)।
डगल कैम्पबेल

Nginx पर NB रनिंग वर्डप्रेस WordPress के सामने प्रॉक्सी कैश के रूप में nginx का उपयोग करने से अलग है।
सैम

26

क्लाइंट साइड एक्सपोज़र सेट करें जैसे सीएसएस, चित्र, जावास्क्रिप्ट आदि के लिए जिसे प्रत्येक पृष्ठ दृश्य के लिए फिर से डाउनलोड करने की आवश्यकता नहीं है। यह, अब तक, मेरी साइट लोडिंग समय के लिए सबसे बड़ा अंतर बना। सबसे तेज़ डाउनलोड वह डाउनलोड है जो कभी नहीं हुआ ...

# 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

आप जो कुछ भी कर सकते हैं वह पूर्व-गज़िप कर सकते हैं (7-ज़िप इस के लिए एक अच्छा उपकरण है) और इसे उसी स्थान पर अपलोड करें, जिस फ़ाइल में आपने अभी gzipped किया है। नीचे दिए गए पूर्व-gzipped फ़ाइलों की सेवा करने के लिए .htaccess को बदलें। यहाँ पर आपको यह याद रखने की आवश्यकता है कि यदि आप चीजों को अपडेट करते हैं तो उन्हें फिर से gzip करना होगा। यह parsing .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 आदि को छोटा, संयोजित और संपीड़ित करने का एक अच्छा तरीका है। यह http अनुरोधों को बहुत कम करता है। Wp-minify सुपरकैश के साथ और एक्सपायरी हेडर के साथ भी अच्छा खेलता है जो मैंने ऊपर दिया है।

फ़ायरबग (फ़ायरफ़ॉक्स) में या अपने http अनुरोधों की निगरानी के लिए या समान है और संकुचित नहीं है। एक्सपायरी हेडर्स पर भी नजर डालिए। आप जल्द ही देखेंगे कि आप क्या सुधार कर सकते हैं।


2
यदि कोई आपके पुनर्लेखन को कॉपी / पेस्ट करने की योजना बना रहा है, तो "रीराइट" का एक उदाहरण है जिसे सही किया जाना चाहिए।
जेरेमी एल

2
कौन सा उदाहरण?
सीएडी

@ नोटिंग क्या आप बता सकते हैं कि किस उदाहरण को ठीक करने की आवश्यकता है? मैं उपरोक्त कोड का उपयोग करना चाहूंगा।
हेलगैथवेकिंग

यह अपाचे के बाद के संस्करणों में आधुनिक gzip से संबंधित हो सकता है। मुझे हाल ही में खान को मॉड डिफ्लेट में बदलना पड़ा।
सीएडी

2
HTML5 बॉयलरप्लेट प्रोजेक्ट के लिए .htaccess के एक अच्छे सेट के लिए एक टेम्प्लेट प्रदान करता है। github.com/h5bp/html5-boilerplate/blob/master/dist/.htaccess
पॉल शेल्डरके

21

आपके द्वारा चलाए जाने वाले प्लगइन्स की संख्या को कम से कम करें जो आपको वास्तव में चाहिए। विशेष रूप से उन प्लगइन्स से अवगत रहें जो हर पेज लोड पर जावास्क्रिप्ट और सीएसएस कोड जोड़ते हैं, तब भी जब उस कोड का उपयोग पेज पर नहीं किया जा रहा हो।

यदि आप स्क्रैच से अपनी खुद की थीम बना रहे हैं, तो अपने सीएसएस को नीचे से तोड़ें ताकि केवल विशेष पेज टेम्प्लेट या व्यू प्रकार (एकल पोस्ट, अभिलेखागार, श्रेणी आदि) के लिए आवश्यक सुविधाओं को केवल जरूरत पड़ने पर लोड किया जाए।

एक CDN (जैसे Amazon CloudFront, या W3TC द्वारा समर्थित किसी भी अन्य) का उपयोग करने के लिए W3TC कॉन्फ़िगर करें।

देखें कि क्या आपके लिए न्यूनतम विकल्प काम करते हैं (कुछ प्लगइन्स जेएस / सीएसएस उत्पन्न करते हैं जो अच्छी तरह से छोटा नहीं होगा, इसलिए मिनिफाई सुविधा को सक्रिय करने के बाद अपनी साइट का परीक्षण करना सुनिश्चित करें)।

यदि आपके पास अपने MySQL सर्वर का पूर्ण नियंत्रण है, तो सुनिश्चित करें कि आपके पास query_cache चालू है। अपने डेटाबेस कॉन्फ़िगरेशन को अनुकूलित करने के अन्य तरीकों को खोजने के लिए एक MySQL ट्यूनिंग स्क्रिप्ट का उपयोग करें ।

यदि CDN का उपयोग किसी कारण से समस्याग्रस्त है, तो अपने Apache सेटअप में mod_expires कॉन्फ़िगर करें। समाप्ति समय को तब तक के लिए सेट करें जब तक स्थिर प्रकार जैसे चित्र, सीएसएस, जावास्क्रिप्ट, वीडियो, ऑडियो, आदि के लिए उचित न हो।


14

डेटाबेस क्वेरी की संख्या को कम करने के लिए मेमेकैच्ड चलाएं और ऑब्जेक्ट कैश का उपयोग करें । यह डेटाबेस के बजाय पृष्ठों के डेटा को कैश करता है। निश्चित नहीं कि w3-total-cache पहले से ही ऐसा करता है।

सुनिश्चित करें कि आप APC की तरह एक opcode कैश चला रहे हैं । (कई और उपलब्ध हैं।)


2
एपीसी वास्तव में वर्डप्रेस को और अधिक उत्तरदायी बनाता है, विशेष रूप से व्यवस्थापक पृष्ठों को। लेकिन, WP-SuperCache और APC के बीच कुछ संभावित कॉन्फ़िगरेशन विरोध हैं। ये W3 कैश को प्रभावित नहीं करते हैं।
WhIteSidE

इस पर मार्क जैक्विथ का एक उत्कृष्ट पोस्ट है: वर्डप्रेस के लिए एपीसी ऑब्जेक्ट कैश बैकएंड । आप एपीसी के साथ ख़ुशी से बल्लेबाजी का उपयोग कर सकते हैं ।
icc97

8

Wp-cache जैसे डिस्क कैशिंग प्लगइन का उपयोग करने के अलावा, अपने ब्लॉग को एक होस्ट वॉल्यूम पर रखें, जिसमें "noatime" गुण सेट हो। अन्यथा, SSH आपके होस्ट में (यदि आपकी वेबहोस्ट वह प्रदान करता है) और नियमित रूप से हर कुछ दिनों में आपकी फाइलों पर यह कमांड चलाता है:

chattr -R +A ~/*

~ / * का अर्थ है "मेरे घर निर्देशिका के तहत मेरी फाइलें"। आप फिट दिखते ही उस रास्ते को बदल सकते हैं। आप इसे cpanel में क्रोन जॉब पर भी सेट कर सकते हैं यदि आपकी webhost प्रदान करती है।

Atime संपत्ति के बारे में अधिक जानकारी के लिए, यह देखें । यह लिनक्स डिस्क रीड परफॉर्मेंस को बहुत तेज करता है।

कभी-कभी मकड़ियों द्वारा आपकी साइट को अंकित किया जा रहा है। आप स्पाइडरस्पेन्कर या चेन्नई सेंट्रल जैसे टूल का उपयोग कर सकते हैं जो मकड़ियों को फ़िल्टर करने में मदद करते हैं जो आपकी साइट पर अधिक पेज रैंक लाने में मदद नहीं करते हैं और इसे धीमा कर देते हैं, और फिर अच्छे मकड़ियों (जैसे Google, बिंग, आदि) को यादृच्छिक भेजकर उन्हें थ्रॉटल करते हैं। HTTP 304 संशोधित संदेश नहीं।

एक और चीज जो मैं देख रहा हूं वह सिर्फ खराब तरीके से लिखे गए प्लगइन्स हैं। यदि आप प्लगइन्स बनाना सीखते हैं, तो आप यह देखना शुरू करते हैं कि कैसे कुछ प्लगइन्स अक्षम रूप से कोडित हैं, या यहां तक ​​कि टाइमबॉम्ब भी मिलते हैं, जैसे कि एक डेटाबेस टेबल जो भरता है और कभी भी साफ नहीं होता है, आने वाली कनेक्शन डेटा जैसी चीजों को संग्रहीत करता है।

यहां अन्य सभी समाधानों से परे, आप अपने ब्लॉग के वर्डप्रेस वेब फार्म को कई वेब नोड पीसी पर होस्ट करके भी बना सकते हैं जो सभी फाइलों के लिए एक ही डेटाबेस और एक सिंगल डिस्क वॉल्यूम से कनेक्ट होते हैं (जैसे कि एनएफएस पर माउंट किया गया वॉल्यूम) )। अल्ट्रा बंदर की जाँच करें कि यह सब कैसे हो रहा है।


7

मेरे सिर के ऊपर से कुछ उत्तर:

1) ब्राउज़र द्वारा जावास्क्रिप्ट और सीएसएस को जहां संभव / व्यावहारिक हो, उसे होस्ट करने के लिए ब्राउज़र को अनुरोध करने की संख्या को कम से कम करें।

2) अपनी छवि / मीडिया को जितना संभव हो सके उतने हिस्से में ऑफलोड करें, खासकर यदि आप साझा होस्टिंग का उपयोग कर रहे हैं।

3) कुल रेंडर समय पर कटौती करने के लिए आप सामने वाले पृष्ठ पर प्रदर्शित होने वाले पोस्ट की संख्या को कम करने का प्रयास करें।

3 ए) एक विषय का उपयोग करने का प्रयास करें जो सामने वाले पृष्ठ पर पूर्ण रूप से कुछ विशेष रूप से पोस्ट किए गए और अन्य सभी, पुराने पदों को अंश के रूप में प्रस्तुत करता है।


2
+1 पदों की संख्या कम करने के लिए, यह बिना किसी लागत के एक जबरदस्त बढ़ावा देता है। लोगों को वास्तव में दस पुराने पदों को देखने की जरूरत नहीं है, मैंने सिर्फ आठ को अपना विश्वास निर्धारित किया है।
ripper234

7

वर्डप्रेस मेनू को कैशिंग करने से आपको एक प्रदर्शन को बढ़ावा मिलता है। खासकर यदि आपके पास बहुत सारे पृष्ठ हैं या एक विशाल मेनू संरचना है, तो इस पर विचार किया जाना चाहिए।

इसे 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 के बजाय एक Databasequery है।

मेनू अक्सर बदलते नहीं हैं - लेकिन आपको 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(मेनू का एक सीधा कॉल के लिए)।

मेनू को हमेशा मेनू के नाम के साथ सहेजा जाता है, न कि थीम में स्थिति।


यह एक बहुत अच्छा विचार है। मुझे कोड के साथ समस्या हो रही है। जब हम क्षणिक बाहर साफ़ कर रहे हैं, $nav_menu_selected_id, एक नंबर है, जबकि जब बुला , एक स्ट्रिंग चर रहा है क्योंकि उस पैरामीटर के लिए सीएसएस आईडी हो जाता है तत्व। get_cached_menu()menu_id<ul>
हेलगेटहाइकिंग

5

अनुकूलन के लिए ट्रिम किए गए डेटाबेस वर्ग का उपयोग करें। हमने मेमोरी कोड और डेटाबेस एक्सेस स्पीड को कम करने के लिए खुद के कोड के साथ अच्छे अनुभव किए। इसके आगे, आप कुछ छोटे बदलावों के साथ डेटाबेस संरचना को स्वयं अनुकूलित कर सकते हैं जो बहुत कुछ करते हैं।

डेटाबेस क्लास कोड का एक हिस्सा वर्डप्रेस ट्रेक में पाया जा सकता है, इसे कोर ( टिकट # 11799 और संबंधित ) में नहीं बनाया गया था ।


दिलचस्प समाधान। इस मामले में किसी के भी दिलचस्पी के मामले में यहाँ Trac टिकट का URL है: core.trac.wordpress.org/ticket/11799
माइक ली

4

अत्यधिक ट्रैफ़िक वाली साइट के लिए, आपको सभी MySQL बफ़र्स को उस सामग्री के लिए ट्यून करना चाहिए जो अभी है। वर्डप्रेस के संस्करण के बावजूद, MySQL परत अपने विन्यास की गणना कर सकती है

वास्तव में, यदि आपके पास innodb_file_per_table को सक्षम किए बिना InnoDB डेटा है, तो आपको प्रत्येक तालिका को अपनी भौतिक तालिकाओं में विभाजित करके InnoDB को साफ़ करने की आवश्यकता हैसीमित हार्डवेयर होने पर भी MySQL ट्यूनिंग करना संभव है । इस तरह के InnoDB अनुकूलन करने के लिए कई परिदृश्य हैं ।

IMHO, आप कॉन्फ़िगर करने के लिए डेटा की मात्रा को जाने बिना my.cnf के लिए अच्छी सेटिंग्स की योजना नहीं बना सकते। आपको समय-समय पर वर्तमान डेटासेट को एक स्टेजिंग वातावरण में उत्पादन से लोड करना होगा, अनुकूलन करना होगा और उत्पादन सर्वर के my.cnf में कॉन्फ़िगर करने के लिए संख्याओं के साथ आना होगा।


3

आप वैश्विक आउटपुट कंप्रेशन को सक्षम कर सकते हैं । यदि ब्राउज़र इसका समर्थन करता है तो यह स्वचालित रूप से बाहर जाने वाली हर चीज़ को जिप्पी कर देगा। यह स्थानांतरित फ़ाइलों के आकार को काफी कम कर देता है, लेकिन आपके CPU लोड को बढ़ाता है।


यह आपकी साइट को "धीमा" बनाने की कोशिश करेगा। याहू! तकनीकी दस्तावेज आपको सुझाव देते हैं कि आप कोड को सिर के अंत के बाद और शरीर की शुरुआत से पहले प्रवाहित करें ताकि स्क्रिप्ट और स्टाइल लोड करना शुरू कर सकें। पूरे पृष्ठ को बफर करके, आप इसे होने से रोकते हैं, और इसलिए पृष्ठ "धीमा" लगता है क्योंकि उपयोगकर्ता को उपयोगकर्ता द्वारा कुछ भी देखने से पहले पूरे पृष्ठ को रेंडर करने के लिए वर्डप्रेस का इंतजार करना पड़ता है।
15

स्कॉट पूरे पृष्ठ को बफ़र करने के बारे में नहीं बोल रहा था लेकिन अपाचे आउटपुट संपीड़न का उपयोग कर रहा था। यह कुछ अलग है, केवल अगर आप आउटपुट आउटपुट के माध्यम से PHP आउटपुट संपीड़न का उपयोग करते हैं, तो इसमें आपके द्वारा अस्पष्टता का वर्णन करने वाली कमियां होंगी। लेकिन प्रति-से वैसे भी नहीं क्योंकि अंत में, बफरिंग आउटपुट चीजों को तेज कर सकता है। यह आपके सर्वर पर I / O के साथ कुछ करना है।
हैक्रे

3

मैंने हाल ही में वर्डकैंप ह्यूस्टन में इस विषय पर बात की थी । उपरोक्त सभी सिफारिशें महान हैं और महत्वपूर्ण बात यह है कि यह सुनिश्चित करना है कि सभी फ्रंट एंड सामान पूरी तरह से अनुकूलित हैं फिर आप कैशिंग और सर्वर के प्रदर्शन के मुद्दों पर काम करना शुरू कर सकते हैं।

प्रगतिशील रेंडरिंग आपके पृष्ठों को तेज़ी से महसूस कराएगा क्योंकि उपयोगकर्ता पूरी तरह से लोड होने से पहले पेज की सामग्री को देखेगा। ऐसा करने के लिए सुनिश्चित करें कि कोई भी अवरुद्ध js पृष्ठ के बहुत नीचे है और सीएसएस शीर्ष पर है।

इसके अलावा अगर आप बहुत सारे सोशल मीडिया बटन का उपयोग करते हैं तो आप पेज को पूरी तरह लोड होने के बाद उन्हें आइफ्रेम में लोड करने के लिए स्क्रिप्ट को कस्टमाइज़ कर सकते हैं। मैंने TweetMeMe के री-ट्वीट बटन के साथ इसे कैसे करें (अब अप्रचलित है क्योंकि ट्विटर ने अपने स्वयं के रीट्वीट बटन को जारी किया था) पर एक ट्यूटोरियल लिखा था, लेकिन अभी भी अन्य शेयर बटन पर लागू किया जा सकता है।

सर्वर के प्रदर्शन के लिए भारी पीएचपी और MySQL उठाने के साथ अपाचे के साथ स्थैतिक सामग्री के लिए फ्रंट एंड प्रॉक्सी के रूप में Nginx में देखें।


2

चूंकि किसी ने अभी तक इसका उल्लेख नहीं किया है, इसलिए किसी भी एलएएमपी सेटअप के साथ सर्वर प्रदर्शन को बढ़ाने के लिए सबसे महत्वपूर्ण चरणों में से एक अपाचे कार्यकर्ता थ्रेड और mod_fcgid पर स्विच करना होगा।

इसने मेरे वर्चुअल प्राइवेट सर्वर पर 500MB की मेमोरी खाली कर दी।


मैंने पहले भी यह कोशिश की है, लेकिन मैं एक स्थिर अपाचे कार्यकर्ता + fcgi पर्यावरण चलाने में सक्षम नहीं हुआ। अगर किसी को उबंटू के तहत इसके लिए कुछ अच्छे सेटअप निर्देशों का पता है , तो कृपया उन्हें पोस्ट करें। मैं विशेष रूप से उन निर्देशों के लिए आभारी रहूंगा, जो अपाचे के कुछ निर्देशों का विस्तार करते हैं, जो FCGI व्यवहार को प्रभावित करते हैं, और समझाते हैं कि उन्हें कैसे ट्विक करने से मेमोरी उपयोग, प्रदर्शन आदि प्रभावित हो सकते हैं। वर्तमान में, मैं एक नगनेक्स फ्रंट के साथ कांटे की अपाचे का उपयोग कर रहा हूं- प्रॉक्सी कैश सर्वर में।
डगल कैम्पबेल

स्थिर परिभाषित करें। मेरी स्थापना बहुत स्थिर चल रही है, लेकिन आपको मेरे कॉन्फ़िगरेशन में 2GB RAM की आवश्यकता होगी। आपको बस पढ़ना और ट्विक करना है। एफसीजी पर अपाचे का प्रलेखन काफी व्यापक है।
मेशफील्ड्स

3
virtualmin.com को उसके बहुत स्थिर और मुफ्त
itsnsal Korkmaz

1

प्लगइन की जाँच के लिए गाइड धीमा

पृष्ठ लोड समय नामक एक सुंदर सरल प्लगइन है , जो आपके पृष्ठ पाद लेख में टाइमर जोड़ता है। इसकी वास्तव में कोड की केवल चार लाइनें हैं:

<?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

वर्डप्रेस में कैशिंग कार्यक्षमता के लिए W3 कुल कैश प्लगइन के साथ छड़ी । प्लगइन की सेटिंग पेज से पेज कैशिंग और डेटाबेस कैशिंग को सक्षम करें। सुनिश्चित करें कि आप कैशिंग तंत्र के रूप में 'वैकल्पिक PHP कैश (APC / APCu)' चुनें। W3 Total Cache में किसी भी तरह का मिनिमाइजेशन सक्षम न करें क्योंकि आपकी साइट की उपस्थिति और / या कार्यक्षमता को तोड़ने के लिए आपके लिए कई मौके हैं। हम इसे क्लाउडफ़ेयर पर छोड़ देंगे।

एक बार जब आप बाकी प्लगइन फंक्शनलिटीज़ को कॉन्फ़िगर करने के साथ हो जाते हैं, तो अपनी वेबसाइट के लिए क्लाउडफ़ेयर सेट करें। सुनिश्चित करें कि आप W3 कुल कैश सेटिंग्स में 'एक्सटेंशन' के तहत Cloudflare को सक्षम करते हैं।

क्लाउडफ्लेयर एक कंटेंट डिलीवरी नेटवर्क है जो आपकी साइट से सभी स्थिर सामग्री (छवि फ़ाइलें, सीएसएस, जेएस, दस्तावेज़, आदि) को कैश करता है और इसे आपके वैश्विक सर्वर से आपके आगंतुकों को प्रदान करता है। यह पृष्ठ लोड समय को गति देने और आपके सर्वर पर लोड को कम करने में मदद कर सकता है। क्लाउड लिस्ट द्वारा कैश की गई फ़ाइल प्रकारों की सूची के लिए इस सूची को चेकआउट करें । इसके अलावा, Cloudflare की एक मुफ्त योजना है।

Cloudflare में, कैशिंग स्तर को मानक पर सेट करें और ब्राउज़र कैश समाप्ति को कम से कम 20 घंटे से अधिक समय तक सेट करें। हमेशा ऑनलाइन ™ सक्षम करें ताकि भले ही आपका सर्वर नीचे चला जाए, क्लाउडफ़्लेयर आपकी वेबसाइट के स्थैतिक पृष्ठों को उनके कैश से काम करेगा। इसके अलावा उनके ऑटो मिनिफाई फ़ीचर को सक्षम करें (याद रखें कि मैंने आपको मिनिमाइज़िंग सक्षम न करने के लिए क्यों कहा है डब्ल्यू 3 टोटल कैश? क्योंकि क्लाउडफ्लू इसे बेहतर करता है!) फिर रॉकेट लोडर ™ को स्वचालित पर सेट करें।

यहाँ रॉकेट लोडर क्या करता है का एक अंश है:

  • पृष्ठ रेंडरिंग को धीमा करने से बचने के लिए जावास्क्रिप्ट फ़ाइलों, यहां तक ​​कि तीसरे पक्ष के संसाधनों को बंडल करके नेटवर्क अनुरोधों की संख्या कम करना।

  • अतुल्यकालिक रूप से लोडिंग स्क्रिप्ट, जिसमें थर्ड पार्टी स्क्रिप्ट शामिल हैं, ताकि
    वे आपके पेज की सामग्री को
    तुरंत लोड करने से रोकें नहीं ।

  • स्थानीय रूप से कैशिंग स्क्रिप्ट्स (लोकलस्टोरेज का उपयोग करते हुए, अधिकांश
    ब्राउज़रों और स्मार्ट फोन पर उपलब्ध ) ताकि वे तब तक पुनः प्राप्त न हों जब तक कि
    आवश्यक न हो।

अधिक जानकारी यहां पाई जा सकती है

यदि संभव हो तो वर्डप्रेस के लिए उत्पत्ति ढांचे पर स्विच करें क्योंकि वे बिना किसी ब्लोट के साफ हैं । जेनेसिस को गति और एसईओ को ध्यान में रखकर बनाया गया था। मैंने खुद इसका परीक्षण किया है और मेरे पेजस्पेड स्कोर अच्छे थे। इसके अलावा, यदि आप उत्पत्ति का उपयोग कर रहे हैं, तो W3 कुल कैश सेटिंग्स में टुकड़ा कैश को सक्षम करने के लिए मत भूलना।

चूंकि अब आप एक CDN के रूप में Cloudlfare का उपयोग कर रहे हैं, आप अपनी छवियों को संपीड़ित करने के लिए TingPNG द्वारा ' इमेजिफ़ाइज़ ' या ' कंप्रेस JPEG & PNG इमेजेज ' जैसे प्लगइन का उपयोग कर सकते हैं । दोनों WordPress.org plugin रिपॉजिटरी में फ्री प्लग इन उपलब्ध हैं। इसके अलावा, इमेजिफाय शक्तिशाली हानिपूर्ण संपीड़न एल्गोरिदम का समर्थन करता है।

अंत में, वर्डप्रेस रिपॉजिटरी से ' स्टैटिक रिसोर्सेज से क्वेरी स्ट्रिंग्स को हटाएं ' प्लगइन स्थापित करें ताकि यह सीएसएस और जेएस फाइलों जैसे स्थिर संसाधनों से क्वेरी स्ट्रिंग्स को हटा दें। ऐसा इसलिए है क्योंकि URL में "?" या "&" वाले संसाधन कुछ प्रॉक्सी कैशिंग सर्वरों द्वारा कैश नहीं किए जाते हैं (याद रखें, क्लाउडफ़ेयर एक प्रॉक्सी कैशिंग सर्वर भी है)।

फिर Use यूज गूगल लाइब्रेरीज ’प्लगइन इंस्टॉल करें । यह प्लगइन आपकी वर्डप्रेस साइट को सीधे आपके वर्डप्रेस इंस्टॉल से इन फ़ाइलों की सेवा के बजाय Google के AJAX लाइब्रेरी एपीआई सीडीएन का उपयोग करने की अनुमति देता है।

कुछ लाभ हैं:

  • मौका बढ़ाता है कि एक उपयोगकर्ता के पास पहले से ही इन फ़ाइलों को कैश किया गया है।
  • आपके सर्वर से अतिरिक्त लोड लेता है।
  • पुस्तकालयों के संकुचित संस्करणों का उपयोग करता है (जब उपलब्ध हो)।
  • Google के सर्वर अनुरोध ब्राउज़र के साथ HTTP संपीड़न पर बातचीत करने के लिए सेट किए गए हैं।

अंतिम लेकिन कम से कम नहीं, रुहानी राबिन द्वारा ' WP-Optimize ' प्लगइन का उपयोग करके अपने डेटाबेस को साफ़ और ऑप्टिमाइज़ करें।

आशा है कि यह सर्वर लोड को कम करने के लिए वर्डप्रेस को अनुकूलित करने के संबंध में आपके प्रश्न का उत्तर देगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.