国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Nginx cache初體驗(yàn)

SexySix / 2688人閱讀

摘要:粗線條一點(diǎn)根據(jù)的位置,一般會(huì)有瀏覽器,服務(wù)器,和應(yīng)用服務(wù)器等。比如安全,解壓縮功能對(duì)所有請(qǐng)求都是通用的,這是可以搞定的,它一般不會(huì)終結(jié)業(yè)務(wù)類的處理,而是將他們交給后面的應(yīng)用服務(wù)器。一致性,因?yàn)槭侨哂嗟模鱾€(gè)節(jié)點(diǎn)間的失效時(shí)間是不同步的。

前言

大家都知道cache對(duì)于網(wǎng)站性能的重要性,提高用戶響應(yīng)速度,減輕后端壓力,節(jié)省資源等等。一談到cache其實(shí)是個(gè)很大話題,從前端瀏覽器到最終響應(yīng)請(qǐng)求的服務(wù)器可能要經(jīng)過很多次跳轉(zhuǎn),每次跳轉(zhuǎn)經(jīng)過的服務(wù)器都有機(jī)會(huì)提供cache。單從成本上而言,越靠近用戶的cache越經(jīng)濟(jì),實(shí)際情況中都需要根據(jù)當(dāng)前線上的業(yè)務(wù)部署情況,開發(fā)成本收益比,可維護(hù)性等因素考慮采取在哪個(gè)地方cache,如何cache。粗線條一點(diǎn)根據(jù)cache的位置,一般會(huì)有瀏覽器,web服務(wù)器,CDN和應(yīng)用服務(wù)器cache等。這里我結(jié)合最近自己完成的nginx服務(wù)器上的cache工作,談一下nginx提供了哪些實(shí)用的cache服務(wù)。


Nginx承擔(dān)反向代理服務(wù)器的工作,一般它處理的業(yè)務(wù)都是比較通用的處理,或者說一般不會(huì)處理很個(gè)性化的請(qǐng)求。比如安全,解壓縮功能對(duì)所有請(qǐng)求都是通用的,這是nginx可以搞定的,它一般不會(huì)終結(jié)業(yè)務(wù)類的處理,而是將他們交給后面的應(yīng)用服務(wù)器。正是因?yàn)镹ginx的這種特性,如果在nginx節(jié)點(diǎn)上做cache,一般cache的是整個(gè)http請(qǐng)求的response。自然cache的key也一般從http請(qǐng)求的url和參數(shù)得來。目前我接觸到兩種nginx cache方式:

本地文件系統(tǒng)cache (proxy_cache )

集中的內(nèi)存cache (srcache-nginx-module)

Proxy_cache

這是Nginx原生的ngx_http_proxy_module自帶的cache解決方案。http response的內(nèi)容以文件的形式存在了本地的文件系統(tǒng),同時(shí)開了一個(gè)share memory冗余存key值可以快速判斷是否cache命中。一般會(huì)這么部署。

如何配置nginx使能proxy cache,可以參考NGINX CONTENT CACHING 和 A Guide to Caching with NGINX
因?yàn)檫@個(gè)方案是本地文件系統(tǒng)存cache,可以比較容易理解具有以下缺點(diǎn):

cache冗余,不同的nginx node間分別存cache。

cache一致性,因?yàn)槭侨哂嗟?,各個(gè)節(jié)點(diǎn)間cache的失效時(shí)間是不同步的。

cache訪問速度慢,讀磁盤自然會(huì)慢一些。

cache效率低,因?yàn)楦鱾€(gè)node各有自己的cache不共享,即使某個(gè)node cache里存了某個(gè)請(qǐng)求,如果另外的nginx node來處理請(qǐng)求還是cache miss。

基于上面的問題,有更好的方案,比如agentzhang的srcache-nginx-module模塊。

srcache-nginx-module

這個(gè)模塊旨在構(gòu)建一個(gè)cache中間層,cache的存儲(chǔ)介質(zhì)是集中的,一般使用memcached或者redis。這樣解決了冗余,也就解決了上面的各種問題,同時(shí)速度也快很多。對(duì)比著,它是這樣部署的。另外集中的cache存儲(chǔ)可以選擇redis或者memcached(memc-nginx-module提供API),memcached集群方案需要nginx配置配合解決。

順便感謝agentzhang將Lua引入到nginx。nginx出色的擴(kuò)展性已經(jīng)很靈活了,lua-nginx-module將腳本語言處理文本的便捷性直接引入nginx,使得開發(fā)人員可以方便的在http request/response處理的各個(gè)階段都能嵌入定制的功能。比如我可以很方便的使用lua模塊在rewrite階段根據(jù)url和args生成定制的cache key--刨除一些參數(shù)(比如不影響response結(jié)果的那些參數(shù))。附上兩篇不錯(cuò)的lua-nginx-module的資料:
lua-nginx-module
OpenResty最佳實(shí)踐
使用memc-nginx和srcache-nginx模塊構(gòu)建高效透明的緩存機(jī)制

另外附上自己的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;
    #
    # cache server 1
    upstream memcache1 {
        server 127.0.0.1:11211;
        #keepalive 512 single;
    }
    # cache server 2
    #upstream memcache2 {
    #    server 127.0.0.1:11211;
    #}
    upstream_list memcache_servers memcache1;

    server {
        listen       8080;
        server_name  localhost;
        #memc-nginx-module
        location /memc {
            internal;
            memc_connect_timeout 100ms;
            memc_send_timeout 100ms;
            memc_read_timeout 100ms;
            set $memc_key $query_string;
            set $memc_exptime 30;
            set_hashed_upstream $backend memcache_servers  $memc_key;
            memc_pass $backend;
        }
        location /s {
            # key gerneration for cache
        set $args_for_key "";
            rewrite_by_lua "
               ngx.var.args_for_key = string.gsub(ngx.var.args, "queryid=%d+","queryid=0")
            ";
            #echo $args_for_key;
            srcache_fetch GET /memc $uri$args_for_key;
            srcache_store PUT /memc $uri$args_for_key;
            proxy_pass http://192.168.1.100:8000;
        }
        location / {
            root   /var/www;
            index  index.html index.htm index.php;
        }
        
        
    }
    server {
        listen 8081;
        location / {
            default_type text/html;
            content_by_lua "
                ngx.say("

hello, world

") "; } } }

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/39291.html

相關(guān)文章

  • Nginx cache體驗(yàn)

    摘要:粗線條一點(diǎn)根據(jù)的位置,一般會(huì)有瀏覽器,服務(wù)器,和應(yīng)用服務(wù)器等。比如安全,解壓縮功能對(duì)所有請(qǐng)求都是通用的,這是可以搞定的,它一般不會(huì)終結(jié)業(yè)務(wù)類的處理,而是將他們交給后面的應(yīng)用服務(wù)器。一致性,因?yàn)槭侨哂嗟模鱾€(gè)節(jié)點(diǎn)間的失效時(shí)間是不同步的。 前言 大家都知道cache對(duì)于網(wǎng)站性能的重要性,提高用戶響應(yīng)速度,減輕后端壓力,節(jié)省資源等等。一談到cache其實(shí)是個(gè)很大話題,從前端瀏覽器到最終響應(yīng)請(qǐng)...

    zombieda 評(píng)論0 收藏0
  • Terraform體驗(yàn)(二) 第一個(gè)demo執(zhí)行

    摘要:初始化在終端中執(zhí)行。首次執(zhí)行初始化操作,會(huì)有較長的時(shí)間去獲取中定義的信息,在第一次初始化后沒有信息的變化,可以跳過初始化直接開始部署。執(zhí)行部署命令時(shí),會(huì)將的列出來展示給用戶,并由用戶確定執(zhí)行。則刪除由創(chuàng)建的容器。通過Terraform在本地運(yùn)行docker nginx前置條件: 1. 安裝好windows docker 2. 安裝好terraform安裝docker安裝windows doc...

    Tecode 評(píng)論0 收藏0
  • Service Workers (PWA 體驗(yàn)

    摘要:是一個(gè)注冊(cè)在指定源和路徑下的事件驅(qū)動(dòng)??梢蕴峁┯行в行У碾x線體驗(yàn),攔截網(wǎng)絡(luò)請(qǐng)求。出于安全原因,要求必須在下才能運(yùn)行。返回一個(gè)對(duì)象,的結(jié)果是對(duì)象值對(duì)象組成的數(shù)組。當(dāng)事件的處理程序執(zhí)行完畢后,可以認(rèn)為安裝完成了。 在前端越來越重的這個(gè)時(shí)代,頁面加載速度成為了一個(gè)重要的指標(biāo)。對(duì)于這個(gè)問題,業(yè)界也有一些解決方案。 瀏覽器緩存、協(xié)議緩存、強(qiáng)緩存 懶加載(首屏) CDN 多域名突破下載并發(fā)限制。...

    twohappy 評(píng)論0 收藏0
  • Service Workers (PWA 體驗(yàn)

    摘要:是一個(gè)注冊(cè)在指定源和路徑下的事件驅(qū)動(dòng)??梢蕴峁┯行в行У碾x線體驗(yàn),攔截網(wǎng)絡(luò)請(qǐng)求。出于安全原因,要求必須在下才能運(yùn)行。返回一個(gè)對(duì)象,的結(jié)果是對(duì)象值對(duì)象組成的數(shù)組。當(dāng)事件的處理程序執(zhí)行完畢后,可以認(rèn)為安裝完成了。 在前端越來越重的這個(gè)時(shí)代,頁面加載速度成為了一個(gè)重要的指標(biāo)。對(duì)于這個(gè)問題,業(yè)界也有一些解決方案。 瀏覽器緩存、協(xié)議緩存、強(qiáng)緩存 懶加載(首屏) CDN 多域名突破下載并發(fā)限制。...

    劉厚水 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<