2013-01-22 60 views
0

我正在使用magento創建電子商務網站。使用magento運行的清漆設置

我正在使用nginx,php5-fpm。

我有512MB RAM和4CPU內核。

我想使用這些規格的清漆。我想知道我應該在清漆配置中設置哪些值,以便我的服務器能夠以最小延遲處理最大請求?我已經嘗試了一些清漆配置,但我得到的響應時間比我沒有清漆的時間長。

+0

你比較緩存內容的響應時間?因爲如果你的迴應沒有被緩存,當然會更大。 – Doomsday

回答

1

這是我一直使用的設置。來自用於magento的Varnish模塊的PageCache。我其實written about setting up this

# This is a basic VCL configuration file for PageCache powered by Varnish for Magento module. 

# default backend definition. Set this to point to your content server. 
backend default { 
    .host = "127.0.0.1"; 
    .port = "8080"; 
} 

# admin backend with longer timeout values. Set this to the same IP & port as your default server. 
backend admin { 
    .host = "127.0.0.1"; 
    .port = "8080"; 
    .first_byte_timeout = 18000s; 
    .between_bytes_timeout = 18000s; 
} 


# add your Magento server IP to allow purges from the backend 
acl purge { 
    "localhost"; 
    "127.0.0.1"; 
} 


sub vcl_recv { 
    if (req.restarts == 0) { 
     if (req.http.x-forwarded-for) { 
      set req.http.X-Forwarded-For = 
      req.http.X-Forwarded-For ", " client.ip; 
     } else { 
      set req.http.X-Forwarded-For = client.ip; 
     } 
    } 

    if (req.request != "GET" && 
     req.request != "HEAD" && 
     req.request != "PUT" && 
     req.request != "POST" && 
     req.request != "TRACE" && 
     req.request != "OPTIONS" && 
     req.request != "DELETE" && 
     req.request != "PURGE") { 
     /* Non-RFC2616 or CONNECT which is weird. */ 
     return (pipe); 
    } 

    # purge request 
    if (req.request == "PURGE") { 
     if (!client.ip ~ purge) { 
      error 405 "Not allowed."; 
     } 
     purge("obj.http.X-Purge-Host ~ " req.http.X-Purge-Host " && obj.http.X-Purge-URL ~ " req.http.X-Purge-Regex " && obj.http.Content-Type ~ " req.http.X-Purge-Content-Type); 
     error 200 "Purged."; 
    } 

    # switch to admin backend configuration 
    if (req.http.cookie ~ "adminhtml=") { 
     set req.backend = admin; 
    } 

    # we only deal with GET and HEAD by default  
    if (req.request != "GET" && req.request != "HEAD") { 
     return (pass); 
    } 

    # normalize url in case of leading HTTP scheme and domain 
    set req.url = regsub(req.url, "^http[s]?://[^/]+", ""); 

    # static files are always cacheable. remove SSL flag and cookie 
    if (req.url ~ "^/(media|js|skin)/.*\.(png|jpg|jpeg|gif|css|js|swf|ico)$") { 
     unset req.http.Https; 
     unset req.http.Cookie; 
    } 

    # not cacheable by default 
    if (req.http.Authorization || req.http.Https) { 
     return (pass); 
    } 

    # do not cache any page from 
    # - index files 
    # - ... 
    if (req.url ~ "^/(index)") { 
     return (pass); 
    } 

    # as soon as we have a NO_CACHE cookie pass request 
    if (req.http.cookie ~ "NO_CACHE=") { 
     return (pass); 
    } 

    # normalize Aceept-Encoding header 
    # http://varnish.projects.linpro.no/wiki/FAQ/Compression 
    if (req.http.Accept-Encoding) { 
     if (req.url ~ "\.(jpg|png|gif|gz|tgz|bz2|tbz|mp3|ogg|swf|flv)$") { 
      # No point in compressing these 
      remove req.http.Accept-Encoding; 
     } elsif (req.http.Accept-Encoding ~ "gzip") { 
      set req.http.Accept-Encoding = "gzip"; 
     } elsif (req.http.Accept-Encoding ~ "deflate" && req.http.user-agent !~ "MSIE") { 
      set req.http.Accept-Encoding = "deflate"; 
     } else { 
      # unkown algorithm 
      remove req.http.Accept-Encoding; 
     } 
    } 

    # remove Google gclid parameters 
    set req.url = regsuball(req.url,"\?gclid=[^&]+$",""); # strips when QS = "?gclid=AAA" 
    set req.url = regsuball(req.url,"\?gclid=[^&]+&","?"); # strips when QS = "?gclid=AAA&foo=bar" 
    set req.url = regsuball(req.url,"&gclid=[^&]+",""); # strips when QS = "?foo=bar&gclid=AAA" or QS = "?foo=bar&gclid=AAA&bar=baz" 

    return (lookup); 
} 

sub vcl_hash { 
    set req.hash += req.url; 
    if (req.http.host) { 
     set req.hash += req.http.host; 
    } else { 
     set req.hash += server.ip; 
    } 
    if (!(req.url ~ "^/(media|js|skin)/.*\.(png|jpg|jpeg|gif|css|js|swf|ico)$")) { 
     call design_exception; 
    } 
    return (hash); 
} 

sub vcl_fetch { 
    if (beresp.status == 500) { 
     set beresp.saintmode = 10s; 
     restart; 
    } 
    set beresp.grace = 5m; 

    # add ban-lurker tags to object 
    set beresp.http.X-Purge-URL = req.url; 
    set beresp.http.X-Purge-Host = req.http.host; 

    if (beresp.status == 200 || beresp.status == 301 || beresp.status == 404) { 
     if (beresp.http.Content-Type ~ "text/html" || beresp.http.Content-Type ~ "text/xml") { 
      if ((beresp.http.Set-Cookie ~ "NO_CACHE=") || (beresp.ttl < 1s)) { 
       set beresp.ttl = 0s; 
       return (pass); 
      } 

      # marker for vcl_deliver to reset Age: 
      set beresp.http.magicmarker = "1"; 

      # Don't cache cookies 
      unset beresp.http.set-cookie; 
     } else { 
      # set default TTL value for static content 
      set beresp.ttl = 4h; 
     } 
     return (deliver); 
    } 

    return (pass); 
} 

sub vcl_deliver { 
    # debug info 
    if (resp.http.X-Cache-Debug) { 
     if (obj.hits > 0) { 
      set resp.http.X-Cache = "HIT"; 
      set resp.http.X-Cache-Hits = obj.hits; 
     } else { 
      set resp.http.X-Cache = "MISS"; 
     } 
     set resp.http.X-Cache-Expires = resp.http.Expires; 
    } else { 
     # remove Varnish/proxy header 
     remove resp.http.X-Varnish; 
     remove resp.http.Via; 
     remove resp.http.Age; 
     remove resp.http.X-Purge-URL; 
     remove resp.http.X-Purge-Host; 
    } 

    if (resp.http.magicmarker) { 
     # Remove the magic marker 
     unset resp.http.magicmarker; 

     set resp.http.Cache-Control = "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"; 
     set resp.http.Pragma = "no-cache"; 
     set resp.http.Expires = "Mon, 31 Mar 2008 10:00:00 GMT"; 
     set resp.http.Age = "0"; 
    } 
} 

sub design_exception { 
} 
+0

是不是magento使用的默認配置?我想知道上面提到的服務器規格的線程參數優化! – MJQ