當前位置:首頁 » 文件管理 » fastcgi緩存

fastcgi緩存

發布時間: 2022-05-30 15:58:40

A. fastcgi中maxchildren和maxspare都是什麼意思

世界知名的三維建模、動畫與渲染解決方案的最新版本。該版本支持64位技術,為數字藝術家提供了下一代游戲開發、可視化設計以及電影電視視覺特效製作的強大工具。運用3ds Max軟體,藝術大師們取得的重大成就已不計其數,包括紐約市的自由之塔,「Assassin』s Creed」(刺客的信條),「Gears of War」(戰爭機器),「Guild Wars」(行會戰爭)和「Mass Effect」(大規模效應)等經典游戲以及「Aeon Flux」(魔力女戰士)與「哈利波特與火焰杯」等電影大片。 由於Alias和Autodesk已經合並,所以3D藝術家和動畫師們今年只需要到一個地方就能了解到Max和Maya的全部重要新聞。從目前的情況看Autodesk並沒有令我們失望。 3DS Max 9 新的3DS Max 9非常注重提升軟體的核心表現,並且加強工作流程的效率。新版本對新的64位技術做了特別的優化,同時提升了核心動畫和渲染工具的功能,能夠為藝術家帶來比先前版本更多的幫助。對共享資源更為緊湊的控制,對工程資源的跟蹤和對工作流程的個性化設置都使得整個的創作更加的快速。 3ds Max 9生成的FBK文件格式,依然可以轉換成Maya, Motionbulider以及其他Autodesk產品的格式,而mental ray 3.5也為Max 9注入了強大的渲染能力。更為簡潔的用戶界面使得全局照明(global illumination)和SSS shaders操作起來更加的方便。統一的間接燈光模型為在不同的radiosity模式間轉換提供了保證。 利用集成的mental ray進行渲染,用戶可以使用渲染所需的任意多的CPU。而集成的mental ray將如同3ds Max scanline renderer那樣的精確。 Autodesk傳媒娛樂部副總裁馬克佩迪特(Marc Petit)對此表示:「開發Autodesk 3ds Max 9,我們旨在幫助用戶應對處理更多復雜數據時、以及擴展到更大規模製作團隊時所面臨的挑戰。使用3ds Max 9,數字藝術大師們將能感到核心性能、生產力以及製作流程效率多方面的提升,並游刃有餘地管理下一代游戲、電影、廣電和設計開發的日漸復雜的三維數據集特徵。」 Silicon Knights游戲工作室總裁Denis Dyack也興奮地表示:「我們游戲中所有的三維建模和動畫都是用Autodesk 3ds Max製作的。我們對3ds Max 9將提供的先進功能感到格外興奮。從九十年代初開始,我們公司所有游戲的視覺方面的成功都離不開3ds Max。用它創作的作品包括熱門游戲『Metal Gear Solid:The Twin Snakes』( 潛龍諜影:雙蛇)、『Eternal Darkness:Sanity』s Requiem』(永恆的黑暗)、『Bloody Omen:Legacy of Kain』(血魔傳奇)、『Dark Legions』( 黑暗軍團) 和『Fantasy Empires』(幻想帝國)。在我們即將出爐的下一代角色扮演動作游戲『Too Human』(非凡戰士)的製作中,3ds Max再次扮演了至關重要的角色。」 Autodesk 3ds Max 9的主要功能 除了64位支持、全新的光照系統、更多著色器和加速渲染能力,3ds Max 9還提供以下功能,以最大化核心性能、生產力和製作流程效率: · 一套可添加到3ds Max中定製裝備和控制器上的分層混合系統 · 線框與邊緣顯示的最優化,可在視圖中得到更快的反饋 · 可保存並載入到步跡動畫(bipeds)上的XAF文件,使定製裝備輸入輸出信息更加輕松 · 增強的頭發和衣服功能,包括在視圖中設計發型的能力 ·增強的對正在處理中資產的文件參照及跟蹤功能 ·點緩存(Point cache)2能將網格變形製作成文件進行快速渲染 ·通過FBX文件格式改善與Autodesk Maya的兼容性 有關全新3ds Max 9功能的完整列表,請訪問 /3dsmax 得益於HP和Intel的支持,歐特克開發商網路(ADN) 星火計劃中的不少第三方開發商已經生產了其原有插件的64位版本以支持3ds Max 9,以便讓用戶立即獲得64位開發工具庫。

B. NGINX proxy 模塊如何如何緩存動態頁面內容如何讓緩存過期

這里用虛擬機配置了下:

nginx 配置文件內容:

主要是這一句:

proxy_cache_path /www/ levels=1:2 keys_zone=Z:10m inactive=1m max_size=30g;

這一句定義一個區域,名字是 Z ,在內存中的空間為10MB ,硬碟中的最大空間為 30G;

inactive=1m 是,1分鍾之後緩存失效 ,從新從源伺服器請求

這里糾正一下,inactive=1m 如果緩存1分鍾沒人訪問,nginx 會刪除掉這些緩存

/usr/local/nginx/conf/nginx.conf
#user nobody;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;

events {
worker_connections 1024;
}

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

#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';

#access_log logs/access.log main;

sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;

#gzip on;
proxy_cache_path /www/ levels=1:2 keys_zone=Z:10m inactive=1m max_size=30g;
server {
listen 80;
server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

location / {
root /www/;
#expires max;

#proxy_store on;
#proxy_store_access user:rw group:rw all:rw;
#proxy_temp_path /www/;
proxy_cache Z;
proxy_cache_valid 200 1m;
#expires max;
include proxy.conf;

if ( !-e $request_filename) {
proxy_pass http://192.168.1.199:45815;
}
}
#這里設置當 訪問 /ajax/目錄下的內容時候,直接從源伺服器讀取,主要用於ajax 的訪問請求,要求實時的
location /ajax/ {

include proxy.conf;
if ( !-e $request_filename) {
proxy_pass http://192.168.1.199:45815;
}
}

#location ~.*\.(jpg|png|jpeg|gif)
#{
# expires max;
#}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

# proxy the php scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}

# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;

# location / {
# root html;
# index index.html index.htm;
# }
#}

# HTTPS server
#
#server {
# listen 443;
# server_name localhost;

# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;

# ssl_session_timeout 5m;

# ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;

# location / {
# root html;
# index index.html index.htm;
# }
#}

}

/usr/local/nginx/conf/proxy.conf
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Accept-Encoding 'gzip';
client_max_body_size 100m;
client_body_buffer_size 256k;

proxy_connect_timeout 60;
proxy_send_timeout 60;
proxy_read_timeout 60;

proxy_buffer_size 512k;
proxy_buffers 8 512k;
proxy_busy_buffers_size 512k;
proxy_temp_file_write_size 512k;

一開始我就這樣配置,認為可以成功了,結果發現動態文件無法被緩存,而html 文件可以被緩存,後來就到很多地方去問,

心想會不會是因為 文件 的 頭信息或者Last-Modified
信息和 ETag 造成的,就去問,http://www.dewen.org/q/9769/nginx+%E5%A6%82%E4%BD%95%E7%BC%93%E5%AD%98%E5%8A%A8%E6%80%81%E9%A1%B5%E9%9D%A2%EF%BC%9F

發現果真如此,馬上修改源伺服器的動態文件,加入以下代碼:

<%@ Page Language="C#" %>
<%

string date = Request.Headers.Get("If-Modified-Since");
if (date != null)
{
Response.StatusCode = 304;
Response.StatusDescription = "from cache";
return;
}

DateTime expDate = new DateTime(2037, 12, 31, 23, 55, 55);
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetExpires(expDate);
Response.Cache.SetMaxAge(expDate - DateTime.Now);
Response.Cache.SetLastModified(new DateTime(2000, 1, 1));

%>

<%=DateTime.Now.ToString()%>

然後發現就可以緩存動態文件了。至此,下一步我就可以用nginx 作為用戶訪問的 伺服器了

這里截一些圖:

C. 請教nginx中fastcgi緩存過期時間,以及如何清理緩存的問題

nginx的緩存服務proxy_cache不能清除指定的URL緩存,只能設置URL過期時間,要清除指定URL可以用nginx第三方模塊ngx_cache_purge。
nginx安裝時需要將ngx_cache_purege載入進去。

D. nginx 配置詳解是怎麼樣的

Nginx配置文件主要分為四部分:main(全局配置)、server(主機設置)、upstream(上游伺服器設置)和location(URL匹配特定位置後的設置)每部分包含若干個指令。

Nginx功能豐富,可作為HTTP伺服器,也可作為反向代理伺服器,郵件伺服器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。

並且支持很多第三方的模塊擴展,Nginx的穩定性、功能集、示例配置文件和低系統資源的消耗讓他後來居上,在全球活躍的網站中有12.18%的使用比率,大約為2220萬個網站。

nginx 配置注意事項

Nginx可以對不同的文件做不同的緩存處理,配置靈活,並且支持FastCGI_Cache,主要用於對FastCGI的動態程序進行緩存。配合著第三方的ngx_cache_purge,對制定的URL緩存內容可以的進行增刪管理。

events塊:配置影響nginx伺服器或與用戶的網路連接。有每個進程的最大連接數,選取哪種事件驅動模型處理連接請求,是否允許同時接受多個網路連接,開啟多個網路連接序列化等。

E. 502 Bad Gateway

可以嘗試清除瀏覽器緩存 訪問一下你的FTP看是否可以登陸 產生原因 伺服器(不一定是Web伺服器)是作為網關或代理,以滿足客戶的要求(如Web瀏覽器或我們的CheckUpDown機器人)來訪問所請求的URL 。此伺服器收到無效響應從上游伺服器訪問履行它的要求。 固定502錯誤 一般這個問題是由於不良的IP之間的溝通後端計算機,包括您可能嘗試訪問的在Web伺服器上的網站。在分析這個問題,您應該清除瀏覽器緩存完全。 如果您上網時在您嘗試訪問的所有網站上都看這個問題,有兩種可能 1 )你的ISP了重大設備故障/過載或 2 )有問題的內部互聯網連接如您的防火牆無法正常運作。 在第一種情況下,只有您的ISP可以幫助您。在第二種情況下,你需要解決什麼,那就是阻止你進入互聯網。 如果您只有在部分嘗試訪問的網站中出現此問題,那就很可能是一個問題,即這些網站之一,其設備故障或超載。聯系網站的管理員。

==========
一些運行在Nginx上的網站有時候會出現「502 Bad Gateway」錯誤,有些時候甚至頻繁的出現。以下是從Google搜集整理的一些Nginx 502錯誤的排查方法,供參考:

Nginx 502錯誤的原因比較多,是因為在代理模式下後端伺服器出現問題引起的。這些錯誤一般都不是nginx本身的問題,一定要從後端找原因!但nginx把這些出錯都攬在自己身上了,著實讓nginx的推廣者備受置疑,畢竟從字眼上理解,bad gateway?不就是bad nginx嗎?讓不了解的人看到,會直接把責任推在nginx身上,希望nginx下一個版本會把出錯提示寫稍微友好一些,至少不會是現在簡單的一句 502 Bad Gateway,另外還不忘附上自己的大名。

Nginx 502的觸發條件

502錯誤最通常的出現情況就是後端主機當機。在upstream配置里有這么一項配置:proxy_next_upstream,這個配置指定了 nginx在從一個後端主機取數據遇到何種錯誤時會轉到下一個後端主機,里頭寫上的就是會出現502的所有情況拉,默認是error timeout。error就是當機、斷線之類的,timeout就是讀取堵塞超時,比較容易理解。我一般是全寫上的:

proxy_next_upstream error timeout invalid_header http_500 http_503;不過現在可能我要去掉http_500這一項了,http_500指定後端返回500錯誤時會轉一個主機,後端的jsp出錯的話,本來會列印一堆 stacktrace的錯誤信息,現在被502取代了。但公司的程序員可不這么認為,他們認定是nginx出現了錯誤,我實在沒空跟他們解釋502的原理 了……

503錯誤就可以保留,因為後端通常是apache resin,如果apache死機就是error,但resin死機,僅僅是503,所以還是有必要保留的。

解決辦法

遇到502問題,可以優先考慮按照以下兩個步驟去解決。

1、查看當前的PHP FastCGI進程數是否夠用:

netstat -anpo | grep "php-cgi" | wc -l如果實際使用的「FastCGI進程數」接近預設的「FastCGI進程數」,那麼,說明「FastCGI進程數」不夠用,需要增大。

2、部分PHP程序的執行時間超過了Nginx的等待時間,可以適當增加nginx.conf配置文件中FastCGI的timeout時間,例如:

......
http
{
......
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
......
}
......php.ini中memory_limit設低了會出錯,修改了php.ini的memory_limit為64M,重啟nginx,發現好了,原來是PHP的內存不足了。

如果這樣修改了還解決不了問題,可以參考下面這些方案:

一、max-children和max-requests

一台伺服器上運行著nginx php(fpm) xcache,訪問量日均 300W pv左右

最近經常會出現這樣的情況: php頁面打開很慢,cpu使用率突然降至很低,系統負載突然升至很高,查看網卡的流量,也會發現突然降到了很低。這種情況只持續數秒鍾就恢復了

檢查php-fpm的日誌文件發現了一些線索

Sep 30 08:32:23.289973 [NOTICE] fpm_unix_init_main(), line 271: getrlimit(nofile): max:51200, cur:51200
Sep 30 08:32:23.290212 [NOTICE] fpm_sockets_init_main(), line 371: using inherited socket fd=10, 「127.0.0.1:9000″
Sep 30 08:32:23.290342 [NOTICE] fpm_event_init_main(), line 109: libevent: using epoll
Sep 30 08:32:23.296426 [NOTICE] fpm_init(), line 47: fpm is running, pid 30587在這幾句的前面,是1000多行的關閉children和開啟children的日誌

原來,php-fpm有一個參數 max_requests,該參數指明了,每個children最多處理多少個請求後便會被關閉,默認的設置是500。因為php是把請求輪詢給每個 children,在大流量下,每個childre到達max_requests所用的時間都差不多,這樣就造成所有的children基本上在同一時間 被關閉。

在這期間,nginx無法將php文件轉交給php-fpm處理,所以cpu會降至很低(不用處理php,更不用執行sql),而負載會升至很高(關閉和開啟children、nginx等待php-fpm),網卡流量也降至很低(nginx無法生成數據傳輸給客戶端)

解決問題很簡單,增加children的數量,並且將 max_requests 設置未 0 或者一個比較大的值:

打開 /usr/local/php/etc/php-fpm.conf

調大以下兩個參數(根據伺服器實際情況,過大也不行)

<value name=」max_children」>5120</value>
<value name=」max_requests」>600</value>然後重啟php-fpm。

二、增加緩沖區容量大小

將nginx的error log打開,發現「pstream sent too big header while reading response header from upstream」這樣的錯誤提示。查閱了一下資料,大意是nginx緩沖區有一個bug造成的,我們網站的頁面消耗佔用緩沖區可能過大。參考老外寫的修 改辦法增加了緩沖區容量大小設置,502問題徹底解決。後來系統管理員又對參數做了調整隻保留了2個設置參數:client head buffer,fastcgi buffer size。

三、request_terminate_timeout

如果主要是在一些post或者資料庫操作的時候出現502這種情況,而不是在靜態頁面操作中常見,那麼可以查看一下php-fpm.conf設置中的一項:

request_terminate_timeout

這個值是max_execution_time,就是fast-cgi的執行腳本時間。

0s

0s為關閉,就是無限執行下去。(當時裝的時候沒仔細看就改了一個數字)

發現,問題解決了,執行很長時間也不會出錯了。

優化fastcgi中,還可以改改這個值5s 看看效果。

php-cgi進程數不夠用、php執行時間長、或者是php-cgi進程死掉,都會出現502錯誤。

原文:http://www.ha97.com/4004.html

---★ 本文轉摘自『IT學習者』→ http://www.itlearner.com/article/4814

F. 如何調整nginx伺服器的性能

linux下Nginx達到並發數很高,TCP TIME_WAIT套接字數量經常達到兩、三萬,這樣伺服器很容易被拖死。事實上,我們可以簡單的通過修改Linux內核參數,可以減少Nginx伺服器的TIME_WAIT套接字數量,進而提高Nginx伺服器並發性能。

vi /etc/sysctl.conf

增加以下幾行:
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000簡單說明:
net.ipv4.tcp_syncookies = 1 表示開啟SYN Cookies。當出現SYN等待隊列溢出時,啟用cookies來處理,可防範少量SYN攻擊,默認為0,表示關閉;
net.ipv4.tcp_tw_reuse = 1 表示開啟重用。允許將TIME-WAIT sockets重新用於新的TCP連接,默認為0,表示關閉;
net.ipv4.tcp_tw_recycle = 1 表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認為0,表示關閉。
net.ipv4.tcp_fin_timeout = 30 表示如果套接字由本端要求關閉,這個參數決定了它保持在FIN-WAIT-2狀態的時間。
net.ipv4.tcp_keepalive_time = 1200 表示當keepalive起用的時候,TCP發送keepalive消息的頻度。預設是2小時,改為20分鍾。
net.ipv4.ip_local_port_range = 1024 65000 表示用於向外連接的埠范圍。預設情況下很小:32768到61000,改為1024到65000。
net.ipv4.tcp_max_syn_backlog = 8192 表示SYN隊列的長度,默認為1024,加大隊列長度為8192,可以容納更多等待連接的網路連接數。
net.ipv4.tcp_max_tw_buckets = 5000 表示系統同時保持TIME_WAIT套接字的最大數量,如果超過這個數字,TIME_WAIT套接字將立刻被清除並列印警告信息。默認為180000,改 為5000。對於Apache、Nginx等伺服器,上幾行的參數可以很好地減少TIME_WAIT套接字數量,但是對於Squid,效果卻不大。此項參 數可以控制TIME_WAIT套接字的最大數量,避免Squid伺服器被大量的TIME_WAIT套接字拖死。

echo 「====================== 執行以下命令使配置生效:=========================」
#更改linux內核參數後,立即生效的命令!

/sbin/sysctl -p

Nginx優化

使用FastCGI 緩存
fastcgi_cache TEST
開啟FastCGI 緩存並且為其制定一個名稱。個人感覺開啟緩存非常有用,可以有效降低CPU 負載,並且防止502 錯誤。

fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2
keys_zone=TEST:10m
inactive=5m;
這個指令為FastCGI 緩存指定一個路徑,目錄結構等級,關鍵字區域存儲時間和非活動刪除時間

其它說明

Nginx 是由 Igor Sysoev 為俄羅斯訪問量第二的 Rambler.ru 站點開發的,它已經在該站點運行超過兩年半了。Igor 將源代碼以類BSD許可證的形式發布。

在高並發連接的情況下,Nginx是Apache伺服器不錯的替代品。Nginx同時也可以作為7層負載均衡伺服器來使用。根據我的測試結 果,Nginx 0.6.31 + PHP 5.2.6 (FastCGI) 可以承受3萬以上的並發連接數,相當於同等環境下Apache的10倍。

根據我的經驗,4GB內存的伺服器+Apache(prefork模式)一般只能處理3000個並發連接,因為它們將佔用3GB以上的內存,還 得為系統預留1GB的內存。我曾經就有兩台Apache伺服器,因為在配置文件中設置的MaxClients為4000,當Apache並發連接數達到 3800時,導致伺服器內存和Swap空間用滿而崩潰。

而這台 Nginx 0.6.31 + PHP 5.2.6 (FastCGI) 伺服器在3萬並發連接下,開啟的10個Nginx進程消耗150M內存(15M*10=150M),開啟的64個php-cgi進程消耗1280M內存 (20M*64=1280M),加上系統自身消耗的內存,總共消耗不到2GB內存。如果伺服器內存較小,完全可以只開啟25個php-cgi進程,這樣 php-cgi消耗的總內存數才500M。

G. 上網有時常常出現這個504 Gateway Time-out這是什麼意思啊

504 Gateway Time-out就字面意思,我們可以理解為網頁請求超時,也就是瀏覽網站網頁所發出的請求沒有反應或者未響應,在網站程序層面來說,就是請求未能夠執行相應的PHP-CGI程序,或者PHP-CGI程序未能做出相應的處理,又或者是CGI程序的響應處理結果未能夠反饋到瀏覽器或者未能及時反饋到瀏覽器。

是由於nginx默認的fastcgi進程響應緩沖區太小造成: 這種情況下導致fastcgi進程被掛起,如果fastcgi服務隊這個掛起處理不是很好的話,就可能提示「504 Gateway Time-out」錯誤。

4、這樣就能正常上網了。

H. 如何解決百度雲加速緩存

一、動靜均緩存

網路雲加速更新後取消了簡單的勾選配置,其實對於我們來說真的說是福利了,作為首批先鋒測試團成員,下面我就簡單給大家設置一下!很多朋友解析到網路雲加速後就放一邊了,結果速度依然蝸牛,沒有感受到飛的快感,那麼今天我就要帶大家一起挖掘一下網路雲加速真正隱藏屬性。

其實,新版網路雲加速需要自己自定義規則來開啟緩存!下面簡單分享下動態網站在網路雲加速下開啟高速緩存的自定義規則,如圖點擊可進入設置

同樣的,根據前面的黑白名單規則,我們先定個調,一般網站應該是這樣的情況:前台都緩存、後台不緩存、個別頁面要緩存或不緩存。

先看下網路雲加速自定義規則的說明:

提示說明:
規則自定義指對「指定URL」進行頁面級規則定製(支持通配符*)。可對任意子域名、目錄、甚至單個URL進行針對性的加速緩存、安全防護等配置。列表中上下關系決定優先順序,靠上規則優先順序高。站長可以通過點擊「↑」調整優先順序。新增規則優先順序最低,將於30s內生效。

URL指定支持通配符*,例如

1) 對img.xiangta.cc進行特定設置,需增加URL: img.xiangta.cc/*

2) 對xiangta.cc/news/ 進行特定設置,需增加URL: xiangta.cc/news/*

3) 對xiangta.cc所有html頁面進行特定設置,需增加URL: xiangta.cc/*.html

支持通配,這就簡單了!不過免費版只支持3條規則,這個就需要你們合理斟酌一下了,不要看我可以設置10條,我是網路雲加速測試者,永久享用10條頂級以及很多功能。

優先順序從上往下依次降低,所以我們要保證不緩存的規則寫到最上面,才能不會緩存規則覆蓋。

根據我個人經驗,一般網站設置如下3條規則即可:

①、網站後台:xiangta.cc/admin/* 設置為不緩存或細致緩存

②、前端分頁:xiangta.cc/?page=* 設置為不緩存或細致緩存

③、網站前台:*xiangta.cc* 設置為前後通配都緩存,緩存一般為1天或者12小時,20小時,根據自己更新速度設置緩存

Ps:細致緩存其實就是只緩存靜態文件,其中緩存時間或有效期請自行設定即可,無需按圖照辦。另外由於新版網路雲加速現在不能對單個域名設置了,所以最後的緩存規則是前後通配,保證某些網站的二級靜態域名也緩存到位。另外,這只是我個人經驗推薦的配置,比如評論分頁就可以根據自己的需要設置為其他頁面,此處分享僅供參考!

這樣設置好了之後,網站前台刷幾下就可以看到效果了,當然還可以F12到network裡面去看header的緩存命中情況,這就不贅述了。注意本人網站是動態網站。

二、只緩存靜態

動靜都緩存可以解決國內低配VPS的2個尷尬:帶寬和負載。帶寬問題,國內普遍小水管就不用我多說了吧。負載問題則是動態網站一直以來的詬病,刷新快一點,CPU就滿了。

但是,有一些網站,本地已有緩存或者訪問流量並不高,他們不想開啟全站緩存,因為會帶來的各種數據不刷新問題。因此,我們如何既解決速度問題,又兼顧實時數據呢?

當然,開啟CDN不進行整站緩存設置的話,大部分CDN會默認緩存靜態文件,基本滿足以上需求。但是某些CDN有個坑爹的規則:他會和諧某些關鍵詞,訪問有這些關鍵詞的頁面就提示違規並不顯示。

如何解決這個問題?很簡單,通過域名做動靜分離即可。

將靜態鏈接替換為二級域名,並開啟CDN緩存。主域名則不走CDN或走CDN但不開啟緩存。

將靜態鏈接替換為二級域名應該不用我多說了吧?

可當然我個人網站的文件都是分離的。

主域名不走CDN也很簡單,直接在解析時不開啟緩存即可,也就是直接回源:

如果擔心暴露IP,如果是阿里雲ECS,你還可以CNAME到阿里雲的WAF上:

走CDN開啟緩存和走CDN禁止緩存應該也不用我多說了,上文都有分享規則。

如上設置後,你的網站的速度也會很快,當然前提是你的動態部分不卡才行。如果網站還是比較卡,但是你有不想開啟純靜態導致數據不刷新,那麼

①、如果是獨立主機,可以考慮開啟redis或opcache等php動態緩存

②、如果是虛擬主機,可以安裝 DB Cache Reloaded Fix這類數據緩存插件

當然,如果你覺得還是不夠快,那麼心系與她一樣,開啟Nginx的fastcgi緩存!

在這里我推薦一下文件分流存儲服務商,又拍雲價格便宜而且效果很明顯,節點我就不多說了,自己ping一下就知道了,配合著網路雲加速,分分鍾讓你網站秒殺市面上20M帶寬的VPS。

三、總結下區別

方案一 和 方案二 到底有什麼區別呢?

方案一:是將動態和靜態都強制緩存到CDN,這樣就算本地不開啟任何緩存,用戶的訪問速度也是杠杠的。如果想要給搜索引擎蜘蛛一樣的速度,那麼本地最好也開啟一下靜態緩存。

方案二:則是只緩存靜態數據,動態數據依然請求到源伺服器。這樣做的好處是既解決了帶寬尷尬,又解決了前台數據不能實時刷新的問題。因為占帶寬的主要是靜態文件,而非html代碼。我們將大體積的靜態文件託管到CDN加速,源伺服器就只要負擔體積很小的html代碼流量了,速度自然就快了,如果覺得還是不夠快那你就選擇配合使用分布儲存

I. Linux下有這樣一個文件夾/usr/local/nginx/fastcgi_temp是幹嘛用的求助

是nginx中fastcgi的一個緩存文件!

J. php怎麼讀取設置nginx緩存

nginx緩存
nginx有兩種緩存機制:fastcgi_cache和proxy_cache
下面我們來說說這兩種緩存機制的區別吧
proxy_cache作用是緩存後端伺服器的內容,可能是任何內容,包括靜態的和動態的
fastcgi_cache作用是緩存fastcgi生成的內容,很多情況是php生成的動態內容
proxy_cache緩存減少了nginx與後端通信的次數,節省了傳輸時間和後端帶寬
fastcgi_cache緩存減少了nginx與php的通信次數,更減輕了php和資料庫的壓力。

proxy_cache緩存設置
#註:proxy_temp_path和proxy_cache_path指定的路徑必須在同一分區
proxy_temp_path/data0/proxy_temp_dir;
#設置Web緩存區名稱為cache_one,內存緩存空間大小為200MB,1天沒有被訪問的內容自動清除,硬碟緩存空間大小為30GB。
proxy_cache_path/data0/proxy_cache_dirlevels=1:2keys_zone=cache_one:200minactive=1dmax_size=30g;

server
{
listen80;
server_namewww.yourdomain.com192.168.8.42;
indexindex.htmlindex.htm;
root/data0/htdocs/www;

location/
{
#如果後端的伺服器返回502、504、執行超時等錯誤,自動將請求轉發到upstream負載均衡池中的另一台伺服器,實現故障轉移。
proxy_next_upstreamhttp_502http_504errortimeoutinvalid_header;
proxy_cachecache_one;
#對不同的HTTP狀態碼設置不同的緩存時間
proxy_cache_valid20030412h;
#以域名、URI、參數組合成Web緩存的Key值,Nginx根據Key值哈希,存儲緩存內容到二級緩存目錄內
proxy_cache_key$host$uri$is_args$args;
proxy_set_headerHost$host;
proxy_set_headerX-Forwarded-For$remote_addr;
proxy_passhttp://backend_server;
expires1d;
}

#用於清除緩存,假設一個URL為http://192.168.8.42/test.txt,通過訪問http://192.168.8.42/purge/test.txt就可以清除該URL的緩存。
location~/purge(/.*)
{
#設置只允許指定的IP或IP段才可以清除URL緩存。
allow127.0.0.1;
allow192.168.0.0/16;
denyall;
proxy_cache_purgecache_one$host$1$is_args$args;
}

#擴展名以.php、.jsp、.cgi結尾的動態應用程序不緩存。
location~.*.(php|jsp|cgi)?$
{
proxy_set_headerHost$host;
proxy_set_headerX-Forwarded-For$remote_addr;
proxy_passhttp://backend_server;
}

access_logoff;
}
}

fastcgi_cache緩存設置
#定義緩存存放的文件夾
fastcgi_cache_path/tt/cachelevels=1:2keys_zone=NAME:2880minactive=2dmax_size=10G;
#定義緩存不同的url請求
fastcgi_cache_key"$scheme$request_method$host$uri$arg_filename$arg_x$arg_y";

server{
listen8080;
server_namewww.example.com;
location/{
root/www;
indexindex.htmlindex.htmindex.php;
}

location~(|.php)${
root/www;
fastcgi_pass127.0.0.1:9000;

fastcgi_cacheNAME;
fastcgi_cache_valid20048h;
fastcgi_cache_min_uses1;
fastcgi_cache_use_staleerrortimeoutinvalid_headerhttp_500;

fastcgi_indexindex.php;
fastcgi_paramSCRIPT_FILENAME/scripts$fastcgi_script_name;
includefastcgi.conf;
#設置緩存的過程中發現無法獲取cookie,經查需要定義這句話
fastcgi_pass_headerSet-Cookie;
}

log_formataccess'$remote_addr-$remote_user[$time_local]"$request"'
'$status$body_bytes_sent"$http_referer"'
'"$http_user_agent"$http_x_forwarded_for';
access_log/httplogs/access.logaccess;
}
總的來說nginx的proxy_cache和fastcgi_cache的緩存配置差不多。
memcache緩存
在討論memcache緩存之前,我們先了解下mysql的內存緩存吧
mysql的內存緩存可以在my.cnf中指定大小:內存表和臨時表不同,臨時表也是存放內存中,臨時表最大的內存需要通過tmp_table_size=128M設定。當數據查過臨時表的最大值設定時,自動轉為磁碟表,此時因需要進行IO操作,性能會大大下降,而內存表不會,內存滿了後,會提示數據滿錯誤。
例:
createtabletest
(
idintunsignednotnullauto_incrementprimarykey
statechar(10),
typechar(20),
datechar(30)
)engine=memorydefaultcharset=utf8
內存表的特性:
1.內存表的表定義存放在磁碟上,擴展名為.frm,所以重啟不會丟失
2.內存表的數據是存放在內存中,重啟會丟失數據
3.內存表使用一個固定的長度格式
4.內存表不支持blob或text列,比如varchar與text欄位就不會被支持
5.內存表支持auto_increment列和對可包含null值的列的索引
6.內存表不支持事物
7.內存表是表鎖,當修改頻繁時,性能可能會下降
轉自:

http://www.nowamagic.net/librarys/veda/detail/1405

下面我們來看看memcache,相對而言mysql的內存表限制較多。
memcache的用途
1.提高系統的並發能力
2.減輕資料庫的負擔
註:memcachelinux系統32位只支持4G內存,同時memcache最長保存時間為30天。

熱點內容
戰地4亞洲伺服器為什麼被攻擊 發布:2025-01-22 23:45:42 瀏覽:668
javascript反編譯 發布:2025-01-22 23:37:57 瀏覽:429
夏天來了你的巴氏奶存儲對嗎 發布:2025-01-22 23:37:56 瀏覽:203
求最大值c語言 發布:2025-01-22 23:22:35 瀏覽:247
一鍵清理系統腳本 發布:2025-01-22 23:21:10 瀏覽:59
防疫宣傳腳本 發布:2025-01-22 23:21:05 瀏覽:632
編譯程序編譯後是什麼語言 發布:2025-01-22 23:20:08 瀏覽:368
電腦文件夾設密碼 發布:2025-01-22 23:17:21 瀏覽:7
anyconnect伺服器地址2018 發布:2025-01-22 23:05:56 瀏覽:530
教師資格面試試講腳本 發布:2025-01-22 22:51:37 瀏覽:684