Я пишу сценарий, где я просто изменяю размеры изображений с запрошенного URL-адреса и кэширования их. Я также даю ширину & height в качестве дополнительных параметров для запроса. Я кэширую изображения по их именам & Я хочу покрыть один прецедент, когда пользователь запрашивает одно и то же изображение с разной шириной или высотой.Как проверить, имеет ли кешированное изображение ту же ширину и высоту, что и изображение с URL?
Поскольку я использую библиотеку изменения размера изображения Codeigniter, имена файлов добавляются с помощью _thumb. Вот как я храню изображения.
Что делать в этом случае? Одним из решений было бы проверить хэш-файл md5
измененного изображения и кэшированного изображения.
Вот что я имею в виду, чтобы сделать:
$ch = curl_init($url); //initialize cURL
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
$dataToWrite = curl_exec($ch); //Execute the given cURL session.
curl_close ($ch); //close the given cURL session
$fp = fopen($dirPath.$filename,'w');
fwrite($fp, $dataToWrite);
fclose($fp);
Наконец,
if (md5_file($dirPath.$filename) == md5_file($dirPath.$resizedImage){
serveimagefromcache() & deletethedownloadedfile();
} else {
resizetheimage() && serveit();
}
Я обеспокоен производительности, а я был бы признателен за любые другие предложения.
Первобытное, но очень эффективное решение заключается в изменении схемы именования, так что оно содержит разрешение. Что-то вроде 'mypic0001_1600_1200.jpg'. Это чрезвычайно эффективно, так как вам не нужно открывать файл для получения информации. И вы можете «glob» содержимое папок кеша в файловой системе этим шаблоном имен. – arkascha
Имеются ли какие-либо проблемы с производительностью? – thedeliciousmuffin
Это, безусловно, намного быстрее, чем любая другая стратегия, такая как расчет суммы чеков или фактическое считывание размеров изображения из файла. Это то, что я подразумеваю под «примитивным, но чрезвычайно эффективным». – arkascha