Назад | Перейти на главную страницу

Может лакировать файлы кеша без определенного расширения или находящиеся в определенном каталоге

У меня есть установка лака для кеширования (МНОГО) изображений, которые обслуживает моя служба. Это около 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.