У меня есть установка лака для кеширования (МНОГО) изображений, которые обслуживает моя служба. Это около 200 изображений со скоростью около 4К в секунду, и лак с радостью обслуживает их по следующему правилу:
if (req.request == "GET" && req.url ~ "\.(css|gif|jpg|jpeg|bmp|png|ico|img|tga|wmf)$") {
remove req.http.cookie;
return(lookup);
}
Дело в том, что недавно я добавил еще одну службу на тот же сервер, которая создает эскизы для обслуживания, но не добавляет конкретного расширения. Файлы имеют следующий шаблон имени файла:
http://www.example.com/thumbnails/date-of-thumbnail/xxxxxxxxx.xx
где xx - числа, поэтому xxxxxxxxx.xx может быть 6482364283.73 (два числа в конце) (на самом деле это метка времени, поэтому я могу сохранить дополнительную информацию в имени файла)
Это имеет побочный эффект: лак не кэширует их, и я вижу, что они постоянно обслуживаются самим apache.
Хотя с этого момента я могу изменить формат, чтобы создать превью, оканчивающуюся на .jpg
, есть ли способ изменить файл vcl моего демона varnish так, чтобы он кэшировал все, что находится в каталоге ( thumbnails
справочник) или все с двумя номерами в расширении?
Дайте мне знать, если я могу предоставить дополнительную информацию!
Спасибо!
Небольшая модификация существующего правила поможет:
if (req.request == "GET" && req.url ~ "^/thumbnails/") {
remove req.http.cookie;
return(lookup);
}
Или вы можете сделать регулярное выражение \.\d{2}$
если вы хотите кэшировать все, что заканчивается двумя цифрами.
Думаю, проще использовать каталог совпадающих миниатюр.
req.url ~ "\thumbnails\?.*"
должно быть довольно близко.
Я рекомендую вам больше узнать о регулярных выражениях и Varnish.