如圖:多個靜態(tài)文件 Waiting(TTFB) 時間過長
![]()
如圖:Waiting(TTFB) 時間過長
![]()
都是靜態(tài)資源,文件也不大,試了全站 CDN 和單個文件 CDN 沒有任何效果,后來懷疑是Nginx 配置問題。經過查詢文檔檢查配置最終找到問題。
解決辦法第一步,啟用緩存
Nginx 靜態(tài)資源配置了禁用緩存,導致每次都重新加載。開啟緩存后刷新就很快了,但是第一次加載依然是兩三秒。
開啟緩存靜態(tài)資源文章源自網吧系統維護-http://m.hvig.cn/9961.html
# 開啟緩存,關閉靜態(tài)資源日志記錄,節(jié)省服務器資源
location ~ .*\.(gif|jpg|jpeg|png|ico|css|js|woff|woff2|ttf)$ {
root /usr/xxx;
#禁用緩存
#add_header Cache-Control no-cache;
# 關閉日志
access_log off;
#緩存7天
expires 7d;
}
解決辦法第二步,啟用 gzip 壓縮
第一次加載依然是兩三秒,解決辦法是開啟靜態(tài)資源壓縮,速度瞬間提升 20 倍哈哈。
在 http 模塊加入以下配置文章源自網吧系統維護-http://m.hvig.cn/9961.html
# 開啟gzip gzip on; # 啟用gzip壓縮的最小文件,小于設置值的文件將不會壓縮 gzip_min_length 1k; # gzip 壓縮級別,1-10,數字越大壓縮的越好,也越占用CPU時間。一般設置1和2 gzip_comp_level 1; # 進行壓縮的文件類型。javascript有多種形式。其中的值可以在 mime.types 文件中找到。 gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; # 是否在http header中添加Vary: Accept-Encoding,建議開啟 gzip_vary on; # 禁用IE 8 gzip gzip_disable "MSIE [1-8]\."; # 設置緩存路徑并且使用一塊最大100M的共享內存,用于硬盤上的文件索引,包括文件名和請求次數,每個文件在1天內若不活躍(無請求)則從硬盤上淘汰,硬盤緩存最大10G,滿了則根據LRU算法自動清除緩存。 proxy_cache_path /usr/local/nginx/cache/ levels=1:2 keys_zone=imgcache:100m inactive=1d max_size=10g;
再來看看現在,靜態(tài)資源加載的速度,保持在100ms以內
文章源自網吧系統維護-http://m.hvig.cn/9961.html
解決辦法第三步,啟用 http2 協議(可選)
HTTP/2(超文本傳輸協議第2版,最初命名為HTTP 2.0),簡稱為h2(基于TLS/1.2或以上版本的加密連接)或h2c(非加密連接),是HTTP協議的的第二個主要版本,使用于萬維網。
如果沒有安裝http_v2_module模塊,則需要重新編譯安裝。文章源自網吧系統維護-http://m.hvig.cn/9961.html
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx/ --with-http_addition_module --with-http_flv_module --with-http_gzip_static_module --with-http_realip_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_dav_module --with-http_v2_module --with-http_geoip_module --with-stream --with-stream=dynamic
Nginx 啟用http2并優(yōu)化https性能, 從而獲得更好的 TTFB 和減少的延遲。文章源自網吧系統維護-http://m.hvig.cn/9961.html
server {
listen 443 ssl;
# 改為
listen 443 ssl http2;
# https 優(yōu)化
# 減少SSL緩沖區(qū)大小,默認情況下,緩沖區(qū)為16k,這是一種“一刀切”的方法,旨在應對較大的響應。但是,為了最大程度地減少TTFB,通常最好使用較小的值。
ssl_buffer_size 4k;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1.2 TLSv1.3; # 最低支持1.2 協議配置
# 使用http2并啟用Nginx ssl_session_cache將確保初始連接的HTTPS性能更快,并且頁面加載速度快于http。
ssl_session_cache shared:SSL:1m; # 可容納約4000個會話
ssl_session_timeout 24h; # 24小時,在此期間可以重復使用會話
# 由于Nginx尚未正確實現會話票證加密密鑰的輪換,因此將其關閉。
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate cert/xxxxx.pem; # 證書地址
resolver 8.8.8.8 202.106.0.20 valid=300s;
resolver_timeout 5s;
}
文章源自網吧系統維護-http://m.hvig.cn/9961.html文章源自網吧系統維護-http://m.hvig.cn/9961.html 版權聲明:文章圖片資源來源于網絡,如有侵權,請留言刪除!!!


評論