নন-শেয়ার্ড হোস্টিংয়ের ওয়ার্ডপ্রেস মাল্টি-সাইটের জন্য সেরা ক্যাচিং বিকল্পটি কী?


13

আপনি কী ক্যাচিং প্লাগইন কনফিগারেশনটি সুপারিশ করেন এবং কেন নিম্নলিখিত অনুমানের অধীনে:

  • সার্ভার কনফিগারেশন সম্পূর্ণ নিয়ন্ত্রণ
  • মাল্টি-সাইট / মাল্টি-ডোমেন মোডে ওয়ার্ডপ্রেস চলছে
  • বেশিরভাগ ডোমেন www.উপসর্গ (কুকিজ) ব্যবহার করছে না
  • (ইচ্ছা) নির্দিষ্ট আইপি বা কুকির উপর ভিত্তি করে ক্যাশে অক্ষম করতে সক্ষম হবেন, যখন আপনি সাইটে পরিবর্তন করেন তবে আপনার ক্যাচিংয়ের দরকার নেই।

বিশদ: ওয়েবসাইটের গতি অনুকূলকরণের চেষ্টা করতে আমি ফায়ারফক্স গুগল পেজ স্পিড প্লাগইন ব্যবহার করছি।

এছাড়াও দয়া করে ছোট চিত্রগুলির মতো জেনেরিক গাইডলাইন সহ গাইড করবেন না।

আসুন আমরা ন্যায্য হতে পারি, একাধিক ক্যাচিং প্লাগইন ব্যবহার করা এর সমাধানের চেয়ে আরও বেশি সমস্যা আনবে তাই দয়া করে একটি সহজ পদ্ধতির চেষ্টা করার চেষ্টা করুন।

উত্তর:


4

"কি প্লাগইন" এর মূল উত্তরটি সম্ভবত ডব্লু 3 মোট ক্যাশে হবে । এটি এই মুহূর্তে সর্বাধিক কার্যকরী এবং সক্রিয়ভাবে বিকাশযুক্ত প্লাগইনগুলির মধ্যে একটি। তবে সম্পূর্ণ পারফরম্যান্স শৃঙ্খলা অনেক দীর্ঘ যে একা ওয়ার্ডপ্রেস প্লাগইন পরিচালনা করতে পারে।

  1. ওয়েব সার্ভার (অ্যাপাচি বা অন্য কিছু) কনফিগারেশন (প্রতিক্রিয়ার সময়, প্রথম বাইট করার সময়, শিরোনাম)
  2. ডেটাবেস (প্রশ্নের প্রক্রিয়াকরণে ব্যয় করা সময়)।
  3. পিএইচপি / ওয়ার্ডপ্রেস (পৃষ্ঠা উত্পাদনের সময়, মেমরির খরচ)।
  4. ফ্রন্ট-এন্ড পারফরম্যান্স (এইচটিটিপি অনুরোধের পরিমাণ, ব্যান্ডউইথ)।

ভাল শুরু স্ট্যাটিক ক্যাশে প্লাগইন (W3 মত) মত opcode মেমরির ভিত্তিক ক্যাশে সাথে থেকে যেতে পারি এপিসি

তবে সেখান থেকে আরও কিছু উপায় রয়েছে (এবং আরও জটিল উপায়গুলি) যেমন আপনি করতে পারেন বিষয়বস্তু বিতরণ নেটওয়ার্কগুলি, বিকল্প ওয়েব সার্ভার ইত্যাদি are


ডব্লিউপি দ্রুততম ক্যাশে ডব্লু 3 মোট ক্যাশে এমনকি মারেও, এমনকি অবজেক্ট ক্যাশে ছাড়াই।
33 21

19

আমার ওয়ার্ডপ্রেস পারফরম্যান্স এবং ক্যাচিং স্ট্যাক

নিম্ন থেকে মাঝের পরিসরের একক সার্ভার বা ভিপিএসের জন্য এটি সেরা ওয়ার্ডপ্রেস পারফরম্যান্স স্ট্যাক। আমি মাঝারি পরিসীমাটিকে প্রায় এক জি মেমরি এবং মোটামুটি দ্রুত ড্রাইভ সহ একক কোর হিসাবে শ্রেণিবদ্ধ করছি।

সার্ভার স্ট্যাক

  • লিনাক্স - হয় দেবিয়ান লেনি বা উবুন্টু
  • এনগিনেক্স - বিপরীত প্রক্সি স্ট্যাটিক ফাইল ক্যাশে হিসাবে কনফিগার করা হয়েছে
  • অ্যাপাচি - অ্যাপাচি বিকল্প পোর্টে এনগিনেক্স দ্বারা লোড করা পিএইচপি পরিচালনা করবে
  • মাইএসকিউএল - ডাব্লুপি দ্বারা প্রয়োজনীয়, আপনার সর্বশেষতম স্থিতিশীল সংস্করণ চলছে কিনা তা নিশ্চিত করুন
  • পিএইচপি - 5.2 বা 5.3 শাখার সর্বশেষ স্থিতিশীল সংস্করণ

পিএইচপি ক্যাশে

  • এপিসি - এটি এমএমএপ মেমরি এবং কমপক্ষে 128 এম এর shm আকারের সাথে কনফিগার করুন

ওয়ার্ডপ্রেস পারফরম্যান্স প্লাগিন স্ট্যাক

ডাব্লু 3 মোট ক্যাশে দিয়ে আমরা পৃষ্ঠা ক্যাশে এবং মিনিফাইটির জন্য ডিস্ক ব্যবহার করছি কারণ এনগিনেক্স আমাদের স্ট্যাটিক ফাইলগুলি খুব দ্রুত পরিবেশন করবে।

স্ট্যাটিক ফাইলগুলি পরিবেশন করতে Nginx কীভাবে কনফিগার করবেন এবং পিএইচপি অ্যাপাচে পাস করবেন

একা অ্যাপাচি ব্যবহার করে সমস্যা হ'ল এটি একটি সংযোগ খোলে এবং স্ট্যাটিক ফাইলের জন্য এমনকি প্রতিটি অনুরোধে পিএইচপি হিট করে। এটি সংযোগগুলি অপচয় করে কারণ অ্যাপাচি এগুলিকে উন্মুক্ত রাখবে এবং আপনার প্রচুর ট্র্যাফিক থাকলে আপনার সংযোগগুলি ব্যবহার না করা সত্ত্বেও তা বন্ধ হয়ে যাবে।

ডিফল্টরূপে অ্যাপাচি 80 পোর্টে অনুরোধের জন্য শোনায় যা ডিফল্ট ওয়েব পোর্ট। প্রথমে আমরা 8080 পোর্টে শোনার জন্য আমাদের অ্যাপাচি কনফ এবং ভার্চুয়াল হোস্ট ফাইলগুলিতে পরিবর্তন করতে যাচ্ছি।

অ্যাপাচি কনফিগার

httpd.conf

কিপএলাইভ বন্ধ রাখুন

ports.conf

NameVirtualHost *:8080
Listen 8080

ভার্চুয়াল হোস্ট প্রতি সাইট

<VirtualHost 127.0.0.1:8080>
     ServerAdmin info@yoursite.com
     ServerName yoursite.com
     ServerAlias www.yoursite.com
     DocumentRoot /srv/www/yoursite.com/public_html/
     ErrorLog /srv/www/yoursite.com/logs/error.log
     CustomLog /srv/www/yoursite.com/logs/access.log combined
</VirtualHost>

আপনার মোডগুলিতে আপনার দর্শনার্থীদের আসল আইপি ঠিকানা থাকবে তাই আপনার মোড_আরপাফ ইনস্টল করা উচিত । যদি না হয় তবে আপনার লগগুলিতে 127.0.0.1 এর উত্সপ্রাপ্ত আইপি ঠিকানা হিসাবে থাকবে।

এনগিনেক্স কনফিগারেশন

ডেবিয়ানে আপনি ইনস্টল করতে সংগ্রহস্থলগুলি ব্যবহার করতে পারেন তবে সেগুলিতে কেবল 0.6.33 সংস্করণ রয়েছে। পরবর্তী সংস্করণ ইনস্টল করতে আপনাকে লেনি ব্যাকপোর্ট প্যাকেজ যুক্ত করতে হবে

$ nano /etc/apt/sources.list

এই লাইনটি ফাইলটিতে যুক্ত করুন deb http://www.backports.org/debian lenny-backports main

$ nano /etc/apt/preferences

ফাইলটিতে নিম্নলিখিতগুলি যুক্ত করুন:

Package: nginx
Pin: release a=lenny-backports 
Pin-Priority: 999

প্যাকেজগুলি যাচাই করতে এবং আপনার সিস্টেমের প্যাকেজ ডাটাবেস আপডেট করতে ব্যাকপোর্টস.আর্গ থেকে কীটি আমদানি করতে নিম্নলিখিত কমান্ডগুলি জারি করুন:

$ wget -O - http://backports.org/debian/archive.key | apt-key add -
$ apt-get update

এখন অ্যাপটি-গেট দিয়ে ইনস্টল করুন

apt-get install nginx

উত্স থেকে সংকলনের চেয়ে এটি অনেক সহজ।

Nginx কনফার্ট এবং সার্ভার ফাইল কনফিগার

nginx.conf

user www-data;
worker_processes  4;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    access_log  /var/log/nginx/access.log;
    client_body_temp_path /var/lib/nginx/body 1 2;
    gzip_buffers 32 8k;
    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    tcp_nodelay        on;

    gzip  on;

  gzip_comp_level   6;
  gzip_http_version 1.0;
  gzip_min_length   0;
  gzip_types        text/html text/css image/x-icon
        application/x-javascript application/javascript text/javascript application/atom+xml application/xml ;



    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

এখন আপনাকে আপনার এনগিনেক্স ভার্চুয়াল হোস্টিং সেট আপ করতে হবে। সাইট-উপলভ্য ডিরেক্টরিতে কোনও ফাইলের সাথে লিঙ্কযুক্ত প্রতিটি ভি হোস্ট সিমের সাথে সাইট-সক্ষম পদ্ধতিটি ব্যবহার করতে চাই।

$ mkdir /etc/nginx/sites-available  
$ mkdir /etc/nginx/sites-enabled
$ touch /etc/nginx/sites-available/yourservername.conf
$ touch /etc/nginx/sites-available/default.conf
$ ln -s  /etc/nginx/sites-available /etc/nginx/sites-enabled
$ nano /etc/nginx/sites-enabled/default.conf

default.conf

বিঃদ্রঃ:

নিম্নলিখিত ফাইলগুলিতে স্থির ক্যাশে সেটিংস কেবল তখনই কাজ করবে যদি এনগিনেক্স প্রক্সি ক্যাশে ইন্টিগ্রেটার প্লাগইন সক্ষম থাকে।

proxy_cache_path  /var/lib/nginx/cache  levels=1:2   keys_zone=staticfilecache:180m  max_size=500m;
proxy_temp_path /var/lib/nginx/proxy;
proxy_connect_timeout 30;
proxy_read_timeout 120;
proxy_send_timeout 120;

#IMPORTANT - this sets the basic cache key that's used in the static file cache.
proxy_cache_key "$scheme://$host$request_uri";

upstream wordpressapache {
        #The upstream apache server. You can have many of these and weight them accordingly,
        #allowing nginx to function as a caching load balancer 
        server 127.0.0.1:8080 weight=1 fail_timeout=120s;
}

প্রতি ওয়ার্ডপ্রেস সাইট কনফ (মাল্টি সাইটের জন্য আপনার কেবল একটি ভোস্টের প্রয়োজন হবে)

server {
        #Only cache 200 responses, and for a default of 20 minutes.
        proxy_cache_valid 200 20m;

        #Listen to your public IP
        listen 80;

        #Probably not needed, as the proxy will pass back the host in "proxy_set_header"
        server_name www.yoursite.com yoursite.com;
        access_log /var/log/nginx/yoursite.proxied.log;  

        # "combined" matches apache's concept of "combined". Neat.
        access_log  /var/log/apache2/nginx-access.log combined;
        # Set the real IP.
        proxy_set_header X-Real-IP  $remote_addr;

        # Set the hostname
        proxy_set_header Host $host;

        #Set the forwarded-for header.
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        location / {
                        # If logged in, don't cache.
                        if ($http_cookie ~* "comment_author_|wordpress_(?!test_cookie)|wp-postpass_" ) {
                                set $do_not_cache 1;
                        }
                        proxy_cache_key "$scheme://$host$request_uri $do_not_cache";
                        proxy_cache staticfilecache;
                        proxy_pass http://wordpressapache;
        }

        location ~* wp\-.*\.php|wp\-admin {
                        # Don't static file cache admin-looking things.
                        proxy_pass http://wordpressapache;
        }

        location ~* \.(jpg|png|gif|jpeg|css|js|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx)$ {
                        # Cache static-looking files for 120 minutes, setting a 10 day expiry time in the HTTP header,
                        # whether logged in or not (may be too heavy-handed).
                        proxy_cache_valid 200 120m;
                        expires 864000;
                        proxy_pass http://wordpressapache;
                        proxy_cache staticfilecache;
        }

        location ~* \/[^\/]+\/(feed|\.xml)\/? {
 # Cache RSS looking feeds for 45 minutes unless logged in.
                        if ($http_cookie ~* "comment_author_|wordpress_(?!test_cookie)|wp-postpass_" ) {
                                set $do_not_cache 1;
                        }
                        proxy_cache_key "$scheme://$host$request_uri $do_not_cache";
                        proxy_cache_valid 200 45m;
                        proxy_cache staticfilecache;
                        proxy_pass http://wordpressapache;
        }

        location = /50x.html {
                root   /var/www/nginx-default;
        }

        # No access to .htaccess files.
        location ~ /\.ht {
                deny  all;
        }

        }

স্ব হোস্টেড সিডিএন কনফ

আপনার স্ব-হোস্ট করা সিডিএন কনফের জন্য আপনাকে কেবল প্রক্সি পাস ছাড়াই স্থির ফাইলগুলি পরিবেশন করতে এটি সেট আপ করতে হবে

server {

        proxy_cache_valid 200 20m;
        listen 80;
        server_name yourcdndomain.com;
        access_log   /srv/www/yourcdndomain.com/logs/access.log;
        root   /srv/www/yourcdndomain.com/public_html/;

 proxy_set_header X-Real-IP  $remote_addr;

      location ~* \.(jpg|png|gif|jpeg|css|js|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx)$ {
                                # Cache static-looking files for 120 minutes, setting a 10 day expiry time in the HTTP header,
                                # whether logged in or not (may be too heavy-handed).

                                proxy_cache_valid 200 120m;
                        expires 7776000;
                        proxy_cache staticfilecache;
                }

location = /50x.html {
                root   /var/www/nginx-default;
        }

 # No access to .htaccess files.
        location ~ /\.ht {
          deny  all;
        }

    }

এখন সার্ভারগুলি শুরু করুন

$ /etc/init.d/apache2 restart  
$/etc/init.d/nginx start

বেঞ্চমার্ক ফলাফল

অ্যাপাচি বেঞ্চে এই সেটআপটি তাত্ত্বিকভাবে প্রতি সেকেন্ডে 1833.56 টি অনুরোধ সরবরাহ করতে পারে

$ ab -n 1000 -c 20 http://yoursite.com/

বিকল্প পাঠ


1
+ বাহ, এটি চিত্তাকর্ষক ছিল তবে এই মুহুর্তের জন্য আমি nginx সেটআপটি এড়িয়ে যাওয়া পছন্দ করব কারণ এটি সার্ভার সেটআপটিকে আরও জটিল করে তুলবে।
sorin

আমি আমার ভিপিএস হোস্টিংয়ে আপনার নির্দেশাবলী অনুসরণ করতে চাই b তবে আমি যদি কোনও ভুল হয়ে থাকে তবে কোনও সমস্যা হতে পারে তা সম্পর্কে আমি ভয় করি I
ব্যবহারকারী 391

1
ধন্যবাদ। মারাত্মকভাবে দরকারী। আমি এই চেষ্টা করতে যাচ্ছি। আমি আশা করি আমি এটি একাধিকবার সংশোধন করতে পারব :)
নাসির

4

মাল্টিসাইটের জন্য ন্যূনতম M৪ এমবি র‌্যাম সহ একটি ওয়েবস্পেস ব্যবহার করুন এবং অ্যাপিসি এবং ম্যাকেচ অ্যাপাচে ব্যবহার করুন, স্থির নয় ক্যাশে এবং আপনি সমস্যা ছাড়াই সমস্ত ডাব্লুপি-ফাংশন ব্যবহার করতে পারেন। আপনি পেজস্পিডের মাধ্যমে স্ক্যান করে অন্যান্য বিকল্পগুলি পড়ুন, থিমটিতে কোডেড ছিল। একটি ক্যাশে দুর্দান্ত কাজ করতে পারে তবে কোনও খারাপ থিম বা প্লাগইন মেরামত করতে পারে না। অন্য একটি সমাধান হ'ল ওয়ার্ডপ্রেসে সিডিএন হিসাবে কুকিজ ছাড়াই সাবডোমেনগুলি ব্যবহার করা। সাবডোমেন নয়, কেবল ডোমেনে কুকিজের জন্য wp-config.php এ এটি যুক্ত করুন।

define( 'COOKIE_DOMAIN', 'example.com' );

এখন থিমের ফাংশন.এফপি-তে নতুন ফাংশন সেট করুন বা আপনার সাবডমাইনগুলি, আপনার কাস্টম সিডিএন-তে পাথ ফর্ম স্ট্যাটিক সামগ্রী প্রতিস্থাপন করতে একটি প্লাগইন লিখুন।

// replace for CDN on bloginfo
if ( !function_exists('fb_add_static_wpurl') ) {
    function fb_add_static_wpurl($info, $show) {

        if ( is_admin() )
            return $info;

        $keys = array(
            'url',
            'wpurl',
            'stylesheet_url',
            'stylesheet_directory',
            'template_url',
            'template_directory',
            );

        if ( in_array( $show, $keys ) ) {

            $wpurl = get_bloginfo('wpurl');

            $search = array(
                $wpurl . '/wp-content/images/',
                $wpurl . '/wp-content/download/',
                $wpurl . '/wp-content/themes/',
                $wpurl . '/wp-content/plugins/',
            );

            $replace = array(
                'http://cdn1.example.com/',
                'http://cdn2.example.com/',
                'http://cdn3.example.com/',
                'http://cdn4.example.com/',
            );

            return str_replace( $search, $replace, $info );

        } else {
            return $info;
        }
    }
    add_filter( 'bloginfo_url', 'fb_add_static_wpurl', 9999, 2 );
}

টেমপ্লেট এবং স্টাইলশিট-পাথের জন্য এখন ফাংশন

function fb_add_static_stylesheet_uri($uri) {

            if ( is_admin() )
                return $uri;

            $wpurl = get_bloginfo('wpurl');

            $search = array(
                $wpurl . '/wp-content/images/',
                $wpurl . '/wp-content/download/',
                $wpurl . '/wp-content/themes/',
                $wpurl . '/wp-content/plugins/',
            );

            $replace = array(
                'http://cdn1.example.com/',
                'http://cdn2.example.com/',
                'http://cdn3.example.com/',
                'http://cdn4.example.com/',
            );
            return str_replace( $search, $replace, $uri );

}
add_filter ( 'template_directory_uri', 'fb_add_static_stylesheet_uri' );
add_filter ( 'stylesheet_uri', 'fb_add_static_stylesheet_uri' );
add_filter ( 'stylesheet_directory_uri', 'fb_add_static_stylesheet_uri' );

এখন কুকিজ ছাড়াই সীমাহীন স্থিতিশীল সিডিএন ইউআরএলগুলিতে পৃষ্ঠা গতি পড়ুন।

এছাড়াও অবরুদ্ধ উত্সটি ব্লক উপজাতীয় সামগ্রীর জন্য .htaccess এ যুক্ত করুন:

##
# Explicitly send a 404 header if a file on cdn[0-9].example.org is not
# found. This will prevent the start page (empty URL) from being loaded.
##
RewriteCond %{HTTP_HOST} ^cdn[0-9]\.example\.org [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* - [R=404,L]

##
# Do not dispatch dynamic resources via cdn[0-9].example.org.
##
RewriteCond %{HTTP_HOST} ^cdn[0-9]\.example\.org [NC]
RewriteCond %{REQUEST_FILENAME} \.(php|html)$
RewriteRule .* - [R=404,L]

দয়া করে ফাংশনটি ব্যবহার করুন, এটিও উদাহরণ এবং আপনি আমার ধারণাগুলি সহ সমাধানগুলি লিখতে পারেন।


0

ওয়েবসভার স্ট্যাক

মূলত প্রতিটি অপারেশন স্মৃতিতে রাখুন!

  • মডার্ন সিপিইউ, ওয়ার্ডপ্রেস হিসাবে উচ্চ মেমরি ব্যান্ডউইথথ মূলত মেমরি অনুলিপি করা, সাব-ম্যাস্ক ডিস্ক অ্যাক্সেসের সময়, আপক্লাউড চেষ্টা করুন!
  • পাতলা ভার্চুয়ালাইজেশন স্তর, আপক্লাউড চেষ্টা করুন! জনপ্রিয়, অ-এন্টারপ্রাইজ সরবরাহকারীদের থেকে দূরে থাকুন
  • দ্রুত অপারেটিং সিস্টেম: কোনও সিস্টেমড নয়, পর্যাপ্ত এনট্রপি, আইআরকিউ ব্যালেন্স, লো মেমরির ব্যবহার
  • হামারিং আক্রমণকারীদের ব্লক করুন: ফেইল 2 বন, স্থায়ীভাবে ছায়া জাল ব্লক করুন
  • যেকোনকাস্ট ডিএনএস
  • কুইক ওয়েবসারভার: অ্যাপাচি ইভেন্ট এমপিএম
  • র‌্যামের মতো গতির সমান্তরাল সংযোগ সিডিএন (অ্যামাজন ক্লাউডফ্রন্ট)
  • হাই স্পিড এসএসএল: ইসিডিএসএ শংসাপত্র, এন্ট্রপি উত্স, টিএলএস 1.2, এসইএস-এনআইয়ের সিফারসুইটস, এসএসএল সেশন ক্যাশে, ওসিএসপি স্ট্যাপলিং, এইচটিটিপি / 2
  • ওপচাসির সাথে আধুনিক পিএইচপি, ফাস্টসিজিআইয়ের মাধ্যমে সংযুক্ত
  • পাতলা ওয়ার্ডপ্রেস ইনস্টলেশন: কেবলমাত্র ন্যূনতম এবং নিরীক্ষিত প্লাগইন
  • মেমোরি অবজেক্ট ক্যাশে রিডিস
  • টোকুডিবি (ফ্র্যাক্টাল ট্রি) মারিয়াডিবি ইঞ্জিন
  • রিসোর্স অপ্টিমাইজেশন
  • জাভাস্ক্রিপ্টস কাটা
  • অবিচ্ছিন্ন পর্যবেক্ষণ: পিংডম, হেটারিক্সটুলস

আমার সমস্ত জ্ঞান মুক্ত-উত্স https://github.com/szepeviktor/debian-server-tools

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.