header.vcl:
backend default {
.host = "127.0.0.1";
.port = "6081";
.connect_timeout = 6000s;
.first_byte_timeout = 6000s;
.between_bytes_timeout = 6000s;
}
#acl purge {
# "10.12.167.130";
#}
sub vcl_recv {
remove req.http.X-real-ip;
set req.http.X-real-ip = client.ip;
set req.http.X-Forwarded-For = client.ip;
if (req.request == "GET" && (req.url ~ "\.(png|jpg|jpeg|gif|css)$" || req.url ~ "print.css")) {
return (lookup);
}
#purge all
if (req.request == "BAN") {
#if (!client.ip ~ purge) {
# error 405 "Not allowed.";
#}
ban("req.url ~ " + req.url );
error 200 "Purged.";
}
if (req.request == "POST") {
return (pass);
}
if (req.http.Authorization) {
/* Not cacheable by default */
return (pass);
}
#if (req.url == "/") {
# return (pass);
#}
if (req.url ~ "^/admin" || req.url ~ "^/index.php/admin") {
return (pass);
}
#we should not cache any page for checkout and customer modules
if (req.request == "GET" && (req.url ~ "^/checkout" || req.url ~ "^/customer" || req.url ~ "^/varnish" || req.url ~ "^/vynamic")) {
return (pass);
}
if (req.url ~ "^/directory") {
return (pipe);
}
#do not cache till session end
if (req.http.cookie ~ "nocache_stable") {
return (pass);
}
# if(req.url ~ "(\?|$)acc=") {
# return(pass);
# }
#unique identifier witch tell Varnish use cache or not
#if (req.http.cookie ~ "nocache") {
#return (pass);
#}
# normalize Accept-Encoding to reduce vary
if (req.http.Accept-Encoding) {
if (req.http.User-Agent ~ "MSIE 6") {
unset req.http.Accept-Encoding;
} elsif (req.http.Accept-Encoding ~ "gzip") {
set req.http.Accept-Encoding = "gzip";
} elsif (req.http.Accept-Encoding ~ "deflate") {
set req.http.Accept-Encoding = "deflate";
} else {
unset req.http.Accept-Encoding;
}
}
if (req.http.host ~ "(?i)tomtop.com") {
if (req.url == "/" || req.url == "/index.php" # cache home page
|| req.url == "/dropship" # cache dropship page
|| (req.url ~ "\?acc=.*" && (req.url !~ "\?acc=.*&.*" && req.url !~ "\?.*&acc=.*" ) ) # param:acc read cache
|| (req.url ~ "\?aid=.*" && (req.url !~ "\?aid=.*&.*" && req.url !~ "\?.*&aid=.*" ) ) # param:aid read cache
|| req.url ~ "^/specials" # cache specials page
|| req.url ~ "^/brand/index/view/brandid" # cache specials page
|| req.url == "/latest" # cache latest reviews page
|| req.url ~ "^/new(\?|$)" # cache new page
|| req.url ~ "^/.+?-\w+-\w+-\w+\.html$" # cache product page
|| (req.url ~ "^/tomtop_catalogsearch/suggest/\?q=") # cache search suggest
|| (req.url ~ "^/computers-networking" # beginning of caching category page
&& req.url !~ "\.html$")
|| (req.url ~ "^/cell-phones"
&& req.url !~ "\.html$")
|| (req.url ~ "^/home-garden"
&& req.url !~ "\.html$")
|| (req.url ~ "^/lasers-flashlights"
&& req.url !~ "\.html$")
|| (req.url ~ "^/sports-and-outdoor"
&& req.url !~ "\.html$")
|| (req.url ~ "^/health-beauty"
&& req.url !~ "\.html$")
|| (req.url ~ "^/clothing-accessories"
&& req.url !~ "\.html$")
|| (req.url ~ "^/mp3-media-player"
&& req.url !~ "\.html$")
|| (req.url ~ "^/car-accessories"
&& req.url !~ "\.html$")
|| (req.url ~ "^/dc-dv-accessories"
&& req.url !~ "\.html$")
|| (req.url ~ "^/toy-kids-baby"
&& req.url !~ "\.html$")
|| (req.url ~ "^/video-games"
&& req.url !~ "\.html$")
|| (req.url ~ "^/musical-instruments"
&& req.url !~ "\.html$")
|| (req.url ~ "^/jewelry"
&& req.url !~ "\.html$")
|| (req.url ~ "^/catalog/salearea")
|| (req.url ~ "^/clearance")
|| (req.url ~ "^/top_selling")
|| (req.url ~ "^/dropshipapi/index/test")
|| (req.url ~ "^/antiques-craftwork"
&& req.url !~ "\.html$") # end of caching category page
) {
unset req.http.Set-Cookie;
return (lookup);
}
# cache rss
if (req.url ~ "^/rss/") {
return (lookup);
}
# cache specails page
if (req.url ~ "^/specials") {
return (lookup);
}
}
return (pass);
}
2footer.vcl
sub vcl_hash {
if (req.http.host) {
hash_data(req.http.host);
} else {
hash_data(server.ip);
}
if (req.url ~ "\?acc=.*" && (req.url !~ "\?acc=.*&.*" && req.url !~ "\?.*&acc=.*" ) ) {
hash_data(regsub(req.url, "\?.*", ""));
}elseif (req.url ~ "\?aid=.*" && (req.url !~ "\?aid=.*&.*" && req.url !~ "\?.*&aid=.*" ) ) {
hash_data(regsub(req.url, "\?.*", ""));
}else {
hash_data(req.url);
}
#hash_data(req.url);
if (regsub(req.http.Cookie, ".*currency=([A-Z]*).*", "\1") ~ "=") {
hash_data("USD");
} else {
hash_data(regsub(req.http.Cookie, ".*currency=([A-Z]*).*", "\1"));
}
if (regsub(req.http.Cookie, ".*country=([A-Z]*).*", "\1") ~ "=") {
hash_data("US");
} else {
hash_data(regsub(req.http.Cookie, ".*country=([A-Z]*).*", "\1"));
}
return (hash);
}
sub vcl_hit {
if (req.request == "BAN") {
purge;
error 200 "Hit Purged.";
}
return (deliver);
}
sub vcl_miss {
if (req.request == "BAN") {
purge;
error 200 "Miss Purged.";
}
return (fetch);
}
sub vcl_fetch {
set beresp.ttl = 86400 s; // default cache 12 hours
if (req.url == "/" || req.url == "/index.php" # cache home page
|| req.url == "/dropship" # cache dropship page
|| req.url ~ "^/specials" # cache specials page
|| req.url ~ "^/brand/index/view/brandid" # cache specials page
|| req.url == "/latest" # cache latest reviews page
|| req.url ~ "^/new(\?|$)" # cache new page
|| req.url ~ "^/.+?-\w+-\w+-\w+\.html$" # cache product page
|| (req.url ~ "^/tomtop_catalogsearch/suggest/\?q=") # cache search suggest
|| (req.url ~ "^/computers-networking" # beginning of caching category page
&& req.url !~ "\.html$")
|| (req.url ~ "^/cell-phones"
&& req.url !~ "\.html$")
|| (req.url ~ "^/home-garden"
&& req.url !~ "\.html$")
|| (req.url ~ "^/lasers-flashlights"
&& req.url !~ "\.html$")
|| (req.url ~ "^/sports-and-outdoor"
&& req.url !~ "\.html$")
|| (req.url ~ "^/health-beauty"
&& req.url !~ "\.html$")
|| (req.url ~ "^/clothing-accessories"
&& req.url !~ "\.html$")
|| (req.url ~ "^/mp3-media-player"
&& req.url !~ "\.html$")
|| (req.url ~ "^/car-accessories"
&& req.url !~ "\.html$")
|| (req.url ~ "^/dc-dv-accessories"
&& req.url !~ "\.html$")
|| (req.url ~ "^/toy-kids-baby"
&& req.url !~ "\.html$")
|| (req.url ~ "^/video-games"
&& req.url !~ "\.html$")
|| (req.url ~ "^/musical-instruments"
&& req.url !~ "\.html$")
|| (req.url ~ "^/jewelry"
&& req.url !~ "\.html$")
|| (req.url ~ "^/antiques-craftwork"
&& req.url !~ "\.html$") # end of caching category page
) {
unset beresp.http.Set-Cookie;
return (deliver);
}
if (beresp.status == 302) {
return (hit_for_pass);
}
#Saint mode
if (beresp.status == 500 || beresp.status == 502 || beresp.status == 503 || beresp.status == 504) {
set beresp.saintmode = 5m;
return (restart);
}
#Fix a strange problem: HTTP 301 redirects to the same page sometimes go in$
if (beresp.http.Location == "http://" + req.http.host + req.url) {
if (req.restarts > 2) {
unset beresp.http.Location;
#set beresp.http.X-Restarts = req.restarts;
} else {
return (restart);
}
}
return (hit_for_pass);
}
sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT";
} else {
set resp.http.X-Cache = "MISS";
}
return (deliver);
}
sub vcl_error {
set obj.http.Content-Type = "text/html; charset=utf-8";
set obj.http.Retry-After = "5";
synthetic {"
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<script>
function to_home() {
window.location.href = "http://www.tomtop.com";
}
</script>
<body>
<center>
Oops! Something unexpected happens. Our support team has been notified. <br/>
Please try again(by refleshing the page) shortly or call our customer service or <a href="http://www.tomtop.com/webmaster">report a site bug for us</a>.<br/>
Will redirect to <a href="http://www.tomtop.com">home</a> page in 10 seconds.
</center>
<script>
window.setTimeout('to_home()', 5000);
</script>
</body>
</html>
"};
return (deliver);
}