Wordpress優化:網站用nginx前端緩存+Redis Cache緩存提速網站

新手站長搭建網站通常爲了省錢沒去選擇大廠的雲服務器,而小廠的服務器雖然便宜,可是訪問速度也很感人,同時若是你用的是Wordpress建站程序,若是不作優化,那麼速度將會更感人。利用寶塔面板和wordpress來搭建網站仍是很容易的,可是搭建網站容易,想要訪問快卻不容易。有些小夥伴老是問,寶塔面板打開很快,可是個人網站訪問卻很慢。寶塔面板訪問快,確定是利用了緩存來加速,你的網站訪問慢,額,配置,帶寬,都是慢的緣由,可是最重要的多是沒有配置緩存。php

應該之前都講過不少配置緩存的文章,基本都是基於寶塔面板和wordpress來講的,固然若是利用寶塔面板來安裝wordpress,最快捷的方式就就是安裝WP-Super-Cache,或者用 WP-Rocket 可是 WP-Rocket是收費的,前者是免費的。html

若是想省錢又省事的話,那麼WP-Super-Cache更安心點,加上Autoptimze基本上也有明顯提高。其餘的還有不少插件好比;WP Fastest Cache、W3 Total Cache、cos-html-cache、Cachify……總得來講,安裝了緩存插件後提速仍是有效果的,可是也帶來了很多的問題。例如配置複雜、生成規則、插件衝突以及沒法應對突發流量,也就是說使用緩存插件仍是沒法達到應對大流量衝擊的狀況。前端

固然還有多方式,站長自己的服務器很渣,爲了提升速度,目前仍是採用了Nginx前端緩存。若是你也是一個畢竟渣的服務器,那麼你也能夠參考下》nginx

那利用Nginx fastcgi_cache緩存,直接使用Nginx爲頁面生成緩存來加速wordpress,並且還支持html僞靜態頁面,效率比使用PHP緩存插件要高得多,也比較適合小配置的VPS上使用。redis

1、安裝Nginx ngx_cache_purge模塊小程序

目前本教程是基於寶塔面板來說的這個教程,寶塔面板很貼心的給咱們編譯好了這個模塊,若是你不放心,能夠用命令來查看一下。瀏覽器

nginx -V 2>&1 | grep -o ngx_cache_purge緩存

查看ngx_cache_purge是否安裝,沒有數據表示未安裝安全

咱們輸入命令以後,結果如圖:服務器

 

2、Nginx開啓fastcgi_cache緩存-配置實例

既然編譯好了模塊,要用這個緩存功能,咱們就須要配置www.src1024.com.conf這個文件,很好找。

/www/server/panel/vhost/nginx/www.src1024.com.conf

也能夠直接去面板找到「網站」-「設置」-「配置文件」

 

2.1配置實例

下面我直接貼出www.src1024.com的Nginx 開啓 fastcgi_cache緩存配置實例,詳細的說明以下:

[wm_login]

#下面各個參數的含義請自行百度!

#下面2行的中的wpcache路徑請自行提早建立,不然可能會路徑不存在而沒法啓動nginx,max_size請根據分區大小自行設置

fastcgi_cache_path /tmp/wpcache levels=1:2 keys_zone=WORDPRESS:250m inactive=1d max_size=1G;

fastcgi_temp_path /tmp/wpcache/temp;

fastcgi_cache_key "$scheme$request_method$host$request_uri";

fastcgi_cache_use_stale error timeout invalid_header http_500;

#忽略一切nocache申明,避免不緩存僞靜態等

fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

#Ps:若是是多個站點,以上內容不要重複添加,不然會衝突,能夠考慮將以上內容添加到nginx.conf裏面,避免加了屢次。

server

{

    listen 80;

listen 443 ssl http2;

    server_name www.src1024.com src1024.com;

    index index.php index.html index.htm default.php default.htm default.html;

    root /www/wwwroot/www.src1024.com;

 

    #start

    set $skip_cache 0;

        #post訪問不緩存

        if ($request_method = POST) {

            set $skip_cache 1;

        } 

        #動態查詢不緩存

        if ($query_string != "") {

            set $skip_cache 1;

        } 

        #後臺等特定頁面不緩存(其餘需求請自行添加便可)

        if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {

            set $skip_cache 1;

        } 

        #對登陸用戶、評論過的用戶不展現緩存

        if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {

            set $skip_cache 1;

        }

        #這裏請參考你網站以前的配置,特別是sock的路徑,弄錯了就502了!

        location ~ [^/]\.php(/|$)

            {

                try_files $uri =404;

                fastcgi_pass unix:/tmp/php-cgi-74.sock;

                fastcgi_index index.php;

                include fastcgi.conf; 

                add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";

                #新增的緩存規則

                fastcgi_cache_bypass $skip_cache;

                fastcgi_no_cache $skip_cache;

                add_header X-Cache "$upstream_cache_status From $host";

                fastcgi_cache WORDPRESS;

                add_header Cache-Control  max-age=0;

                add_header Nginx-Cache "$upstream_cache_status";

                add_header Last-Modified $date_gmt;

                add_header X-Frame-Options SAMEORIGIN; # 只容許本站用 frame 來嵌套

                add_header X-Content-Type-Options nosniff; # 禁止嗅探文件類型

                add_header X-XSS-Protection "1; mode=block"; # XSS 保護

                etag  on;

                fastcgi_cache_valid 200 301 302 1d;

        }

        #緩存清理配置(可選模塊,請細看下文說明)

        location ~ /purge(/.*) {

            allow 127.0.0.1;

            allow "45.154.199.50";

            deny all;

            fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1";

        }

        #end

#如下內容以默認網站原來設置……

[/wm_login]

關於sock,寶塔面板的在/www/server/php/74/etc/php-fpm.conf中有配置路徑寶塔面板的sock,若是不清楚,能夠本身打開看下,而後複製到須要修改的地方就能夠了。

注意:這個74表示你的PHP版本,若是是PHP7.2改爲72,同理……

2.2 簡單說明

本地or內存?在fastcgi_cache_path和fastcgi_temp_path中,有人會建議將它設置爲內存路徑,例如:/dev/shm/nginx-cache levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;,若是你的磁盤IO很慢的話建議採用此方式,畢竟內存的讀寫速度很是快。

add_header Cache-Control若是是動態內容要實時更新的話,能夠設置爲0,不然能夠設置時間大一些。

請仔細閱讀代碼中的全部註釋,該修改的修改,該建立的建立,該補充的根據實際狀況補充,額,基本沒什麼問題的,寶塔面板的直接複製粘貼就能夠了。

3、安裝Nginx Helper插件

配置好了fastcgi_cache緩存以後,咱們須要安裝插件, fastcgi_cache 有一個量身定作的 WordPress 緩存清理插件:Nginx Helper。這個插件不定時更新,並且更新的很頻繁。安裝這個插件 ,很是簡單,直接進入 WordPress 後臺插件安裝界面搜索 Nginx Helper 關鍵詞在線安裝便可。

安裝後,從後臺【工具】==>【Nginx Helper】打開插件設置界面以下所示:

 

首先是開啓purge,而後咱們選擇nginx Fastcgin cahe,由於就咱們用就是這個緩存。以後選擇Delete local server cache files。固然第一個也能夠用,可是通常推薦用Delete local server cache files由於每一個服務器的環境都不同,緩存路徑也會不盡相同就會致使插件沒法找到緩存文件並刪除!

插件還提供了其它的一些設置,功能很是豐富,例如發表新文章、新評論時是否更新Nginx緩存等。

額,通常默認的就能夠的選項就能夠了,若是看不懂能夠用谷歌瀏覽器翻譯下。

下圖是「大鳥」大神的配置,能夠參考

 

3.1清理模式選擇

清理模式還須要仔細說下。

①、purge 模式

這個模式須要保留上文 Nginx 配置中的 purge 清理路徑,清理的時候會產生一個請求。

出於安全考慮,通常 purge 都不會徹底開放!只有特定的 IP 能夠訪問,因此,若是用了 CDN 的朋友,再使用模式一,則須要在服務器上的 /etc/hosts 中將網站域名解析爲服務器真實 IP,以便插件直接請求 purge 路徑,而不用走 CDN 節點,避免請求被拒絕。仍是沒搞懂的話就放棄這個模式吧!

②、文件模式

模式二是直接清理對應的緩存文件,不須要請求 purge 這個清理路徑,因此使用模式二,不須要配置上文 Nginx 的 purge 規則(我我的推薦使用這個模式)。

因爲插件做者定義的緩存路徑是 /var/run/nginx-cache ,而咱們可能會根據服務器實際狀況來自定義緩存路徑,這樣一來,緩存路徑的不一樣就會致使插件沒法找到緩存文件並刪除!

3.2解決辦法

很簡單,在 WordPress 根目錄下的 wp-config.php 中新增以下代碼便可:

//根據實際狀況定義緩存的存放路徑

define( 'RT_WP_NGINX_HELPER_CACHE_PATH','/tmp/wpcache');

Ps:不知道添加到第幾行的話,能夠添加到 define('WPLANG', 'zh_CN'); 的後面便可。添加後建議重載一下 php,確保變量生效(主要針對開啓了 PHP 緩存的網站!)。

若是所有設置好,改保存的保存,改重啓的重啓,等等!

4、Nginx fastcgi_cache效果預覽

啓用了Nginx fastcgi_cache後,咱們就能夠在瀏覽器Header 頭部信息中看到已經命中了。

 

對於已經設置了不緩存的頁面,Nginx fastcgi_cache會直接顯示BYPASS,咱們若是是登陸狀態那是不顯示緩存的,如圖:

 

同時,咱們服務器的緩存路徑中也能看到Nginx fastcgi_cache生成的緩存文件。

 

若是你發現你的評論過的用戶依然用的是緩存,那應該是WP沒有記住cookie,把如下代碼加入到functions.php中便可。

add_action('set_comment_cookies','coffin_set_cookies',10,3);

function coffin_set_cookies( $comment, $user, $cookies_consent){

  $cookies_consent = true;

  wp_set_comment_cookies($comment, $user, $cookies_consent);

}

5、總結

Nginx開啓fastcgi_cache緩存對於加快網頁響應速度以及節省服務器資源有着很是重要的意義,下圖是其餘大神在alibabacloud.com的測試結果,能夠看出來啓用緩存後服務器的承載能力有了很是大的提高。

 

5.1 細節調整

啓用fastcgi_cache緩存時,發如今Nginx配置文件中添加了Cache-Control信息,可是老是不生效。HTTP頭部信息會總會包含如下信息:

Cache-Control: no-store,no-cache,must-revalidate,post-check=0,pre-check=0 和 Pragma: no-cache,

通過排查,問題出在了寶塔面板中的session.cache_limiter的PHP.ini設置部分, 默認值是nocache,咱們須要將它設置爲none便可。

 

5.2 X-Powered-By

咱們用寶塔面板會默認的出現X-Powered-By 7.2.12 出現php的版本信息,從安全角度來講仍是很不友好的。X-Powered-By是網站響應頭信息其中的一個,出於安全的考慮,通常會修改或刪除掉這個信息。

#php7.4 默認關閉

寶塔面板裏咱們如何修改呢:PHP.ini設置expose_php = off

設置好以後,咱們重載php服務。

利用寶塔面板給WordPress開啓Nginx fastcgi_cache緩存加速方法就說完了,若是有什麼疑問能夠留言,說實話利用寶塔面板來搞這個Nginx fastcgi_cache緩存加速仍是很是方便的。喜歡折騰的小夥伴趕忙試試。

其實,Nginx Helper還支持redis cache模式的緩存,也是很是不錯的!

Nginx Helper真的是很是強大,關鍵是這麼強大的插件仍是免費的。

最後:友情提示,若是咱們勾選Enable Nginx Timestamp in HTML 你在查看網頁源代碼的時候會發現一些信息如圖:

 

若是你不須要這些信息,能夠選擇關閉。

本文參考:大鳥博客

本文來源:1024資源網

更多建站、小程序問題能夠直接加站長QQ,站長長期出售多商戶系統app/小程序/PC源碼 無任何加密,支持PHP7.4

相關文章
相關標籤/搜索