Wednesday, December 8, 2010

How to purge Squid /varnish stale/outdated pages programmatically

>>>For SQUID, you need to enable the Purge Request for IP and Send a Request to the Squid server using the PURGE http method.

squid.conf, enable Purge request from a given devices.

acl localnetwork 10.10.8.1/255.255.255.255.0
http_access allow PURGE localnetwork


you can use squidclient utility
squidclient -m Purge http://squidserver:2128/foo.html

Here is one C# code snippet.

string url = http://squidserver:3128/fooo.html;
//Squid IP: Port 
WebRequest req = HttpWebRequest.Create(url);
req.Method = "PURGE";
try
            {
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
if (resp.StatusCode == HttpStatusCode.OK)
                {
Console.WriteLine("PURGE Sucessful");
                }
else
                {
Console.WriteLine("PURGE Failed");
                }
            }
catch (WebException ex)
            {
Console.WriteLine("PURGE Failed" + ex.Message);
            }

>>> Varnish , two ways.
option 1, send the purge directive from the admin console. (when you start the varnishd, add one –T for the admin port, i,e 7777)  varnishd –a 0.0.0.0:8888 –T 0.0.0.0:7777 –f  youvcl.vcl

then telnet to the 7777 admin port, enter “purge req.url ~ foo.html” , this will put a switch mark for all url matching the expression foo.htm

also, this process can be implemented in the C# code.

string url = "fooo.html"; //URL regular expression
TcpClient t = new TcpClient();
t.Connect("varnishserver", 7777); //varnish admin port
NetworkStream ns = t.GetStream();
StreamReader sr = new StreamReader(ns);
System.Threading.ManualResetEvent mre = new ManualResetEvent(false);
new Thread(
                (object obj) =>
                {
while (true)
                    {
if (ns.DataAvailable)
                        {
Console.WriteLine(sr.ReadLine());
                        }
if (mre.WaitOne(TimeSpan.FromSeconds(3)) == true)
                        {
break;
                        }
                    }
                }
                ).Start();
StreamWriter sw = new StreamWriter(ns);
sw.Write("purge req.url ~ " + url + sw.NewLine);
sw.Flush();
ns.Flush();
mre.Set();

Option 2, put a logic in the recv VCL, intercept the PURGE method and call the purge method.

sub vcl_recv {
        if (req.request == "PURGE") {
                if (!client.ip ~ purge) {
                        error 405 "Not allowed.";
                }
                purge("req.url == " req.url );
                error 200 "Purged.";
        }
}


the code is the same like the squid options.

1 comment:

Anonymous said...

Вот еще немного ссылок на тему, Сайты Секс Знакомств В Краснодаре

Секс Игрушки Для Котов - http://herrodandrew.dousetsu.com
Секс Игры Для Мобильного - http://grahamcedric.dousetsu.com
Видео Позы Секса Для Беременных - http://kieranoleg.dousetsu.com
Как Оригинально Познакомиться - http://berkchanning.dousetsu.com
Знакомства В Москве И Московской - http://isaacdriscoll.dousetsu.com
Давай Познакомимся Стихи - http://ericmarshall.dousetsu.com
Секс Видио Чат Онлайн - http://gilzane.dousetsu.com
Опен Сайт Знакомств - http://ryanigor.dousetsu.com
Секс Для Удовольствия - http://grayulric.dousetsu.com
Planet Знакомства - http://abeljakeem.dousetsu.com
Онлайн Секс Чат Девушки - http://jacksonerasmus.dousetsu.com
Сайт Знакомств Для Полных Людей - http://guytyrone.dousetsu.com
Фото Мужчин С Сайта Знакомств - http://baxterciaran.dousetsu.com
Знакомства Через Веб - http://nolanmacaulay.dousetsu.com
Как Оригинально Познакомиться - http://rudyardroth.dousetsu.com
Сервер Знакомств - http://dominicarden.dousetsu.com
Сайт Знакомств От 50 Лет - http://jakeememerson.dousetsu.com
Зеленоградский Сайт Знакомств - http://tanekjonas.dousetsu.com
Фото Знакомства Женщины - http://wayneyoshio.dousetsu.com
Познакомились В Интернете И Поженились - http://avrameric.dousetsu.com
Откровенные Знакомства - http://clintonmalik.dousetsu.com
Самые Большие Сайты Знакомств - http://peterdieter.dousetsu.com
Красноярский Сайт Знакомств - http://mylesmicah.dousetsu.com
Знакомства Сегодня - http://clarkeburton.dousetsu.com
Nirvana Сайт Знакомств - http://patrickmagee.dousetsu.com
Сайт Знакомств Для Лесбиянок - http://traviskareem.dousetsu.com
Реальные Встречи Для Секса - http://lucianorson.dousetsu.com
Знакомства Mail Ru Без Регистрации - http://yulinicholas.dousetsu.com
Девушки Для Секса В Уфе - http://hoyttanner.dousetsu.com
Сайт Знакомств В Мариуполе - http://eltonjarrod.dousetsu.com
Знакомства Нефтекамск - http://uptonwilliam.dousetsu.com
Оральный Секс Для Девушки - http://abelbenjamin.dousetsu.com
Необычные Позы Для Секса Фото - http://joelkennedy.dousetsu.com
Секс Для Oblivion - http://rashadezekiel.dousetsu.com
Движок Знакомств - http://masonslade.dousetsu.com
Знакомства Для Секса За Деньги - http://wadeodysseus.dousetsu.com
Знакомства Лучшие - http://brennanknox.dousetsu.com
Замужние Женщины Для Секса - http://ezekieluriah.dousetsu.com
Вирт Знакомства Чат - http://brianleroy.dousetsu.com
Юины Для Секса - http://colthoward.dousetsu.com
Мамаба Сайт Знакомств - http://alicolby.dousetsu.com
Ищу Девушку Для Виртуального Секса - http://marshallconan.dousetsu.com
Донецкий Сайт Знакомств - http://stoneblaze.dousetsu.com
Возраст Для Первого Секса - http://dillonoleg.dousetsu.com
Секс Чат Майл - http://jerryemery.dousetsu.com
Сайт Серьезных Знакомств - http://channingjohn.dousetsu.com
Хочу Познакомиться С Итальянцем - http://borisalec.dousetsu.com
Девушки Для Секса Ярославль - http://kaseemraja.dousetsu.com
Сайт Знакомств В Эстонии - http://hedleymicah.dousetsu.com
Tatar Сайт Знакомств - http://rajanigel.dousetsu.com

 
Locations of visitors to this page