Vanoid Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Есть ли возможность ограничить кэш в opencart? Дело в том, что магазин довольно большой, картинки товаров занимают много места. А при показе товаров картинки ещё и в кэш грузятся. В итоге объём кэша превышает все мыслимые и немыслимые пределы, наглухо забивая весь отведённый объём хостинга (20 гигов). После этого магазин перестаёт работать. 1. Можно ли как-то ограничить рост объёма кэша помегабайтно? Например 100 мегабайт??? Или поштучно??? 2. Или, может, вообще кэш отключить? Магазинчик работает довольно шустро. 3. Или, может, можно картинки брать не с хостинга, а с внешнего адреса? То есть вообще не загружать их на хостинг, а брать по внешнему IP. Надіслати Поділитися на інших сайтах More sharing options...
sv2109 Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Так у вас проблемы с кешем рисунков, который в /image/cahce/data или системный кеш который в /system/cache? Если рисунки и рисунков много то соответственно и создается на каждый рисунок несколько разных вариантов размеров. Как вариант (если используется много похожих размеров) можно оставить на сайте несколько основных размеров, а остальные менять средствами css. Например если одному модулю нужен рисунок 100 на 100, а другому 90 на 90 то для каждого рисунка в системе создается 2 варианта. Можно для 2-х модулей установить 100 на 100, а для второго прописать в css высоту и ширину 90. Еще вариант написать скрипт который будет удалять старые рисунки и запустить его по крону, тогда он автоматически будет все подчищать. Отключать кеширование рисунков очень не рекомендую, это создать огромную нагрузку на сервер, для каждой страницы и для каждого пользователя придется постоянно на лету создавать уменьшенные копии каждого рисунка, а их на 1 странице может быть штук 50 Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Новый хостинг найдите! 20гб вообще ни о чем в наше время... или скрипт по крону пускайте который бы чистил, а оставлял бы файлы скажем за последний день... Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Как вариант (если используется много похожих размеров) можно оставить на сайте несколько основных размеров, а остальные менять средствами css. я бы использовал этот вариант Надіслати Поділитися на інших сайтах More sharing options... sv2109 Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Скрипт по крону - самый очевидный вариант, но не рабочий, к сожалению. Почему не рабочий? Пишется скрипт, который по расписанию, например раз час заходит в папку кеша рисунков и удаляет оттуда самые старые пока размер папки не будет меньше определенного размера или дата файла меньше определенной даты. В чем проблема? Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Почему не рабочий? Не рабочий потому что, удаление одного файла - это 100% загрузка на CPU :) А так по сути господа решайте... или место на диске или... вот такая жопа... Можно вообще cdn прикрутить и сразу удалять файлы... повторно они могут не понадобится :) 2toporchillo: почитайте вообще что такое кеширование, кеширование в mysql и для чего оно нужно... а то второй раз влезаете, а суть проблемы не догоняете, т.к. не понимаете как все работает... Надіслати Поділитися на інших сайтах More sharing options... sv2109 Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Не рабочий потому что, удаление одного файла - это 100% загрузка на CPU :) Какая 100% загрузка, вы о чем? Мы же не будет удалять каждый час по миллиону файлов? Если удалять только устаревшие файлы и запускать крон каждый час то сколько файлов устареет за час? 10, 100, 1000? Сколько времени займет для команды rm удалить 1000 файлов? 1 секунда? Так в чем проблема? 1 Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Да я то понял, это шутка такая была... в конце же смайлик :) Вот вы ему это подробно и расписали за меня, а то он бред с умным видом не только тут несет... Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 И кэш тут файловый, а не базы. К стати, CDN + отказ от кэша картинок возможно неплохой вариант. Расскажите, как работает CDN, можно ее использовать в качестве кэша? И как осуществляется загрузка картинок в CDN? Да вот принцеп один и тот же тока кеши разные как вы заметили таки... оставить то что часто используется... а то что не часто УДАЛИТЬ из КЕША ибо нех жрать место!!! Правильнее конечно же определить когда последний раз открывали эту картинку (заходили на страницу с ней) и если ее не открывали последние сутки то удалить ее... но это ГЕМОРОЙНО!!! Поэтому как я в начале и предложил берем то что старше суток и удаляем... что мы имеем в итоге... нам надо что-то заново создать при заходе на эту страницу... верно? Какова вероятность что тут же нам их придется создать (ВСЕ!)!? Тут все зависит от кол-ва посетителей на сайте... если у человека кеш на 20гб то берем 20.000.000кб делим на 20кб (средний размер) и получаем 1000.000 картинок... предположим у человека 10 картинок на товар... у него 100.000 товара в базе... Берем количество просмотров 10.000 человек, каждый получает по 10 картинок, т.е. за сутки его база должна отработать 1/10 всего... Делим 100.000/24/60 в минуту надо зафигарить 70 картинок, т.е. это чуть больше 1 картинки в секунду, это при том что запрос не попал в кеш... это нагрузка ниипаца просто :) на самом деле если у него есть 10к простмотров, то он скорее купит хостинг где есть хотябы 100гигов места :) Да я то не ошибся форумом, а вот вы не зная даже что такое cdn походу явно имеете ошибку... и ошибка это как в одном анекдоте :) Надіслати Поділитися на інших сайтах More sharing options... sv2109 Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Не нужно забывать так же что далеко не все товары в магазине просматриваются равномерно. Всегда есть какие-то топовые модели или товары по акциям или товары на первых страницах в каталогах, которые просматриваются регулярно (думаю их будет процентов 20) и товары, не очень популярные или которых может вообще не быть на складе и которые просматриваются раз в несколько дней.. (а таких вполне может быть процентов 80) Правильнее конечно же определить когда последний раз открывали эту картинку (заходили на страницу с ней) и если ее не открывали последние сутки то удалить ее... но это ГЕМОРОЙНО!!! А это кстати вариант! Есть такая linux команда - touch, которая меняет время доступа к файлу. Так почему бы во время каждого обращения к файлу (или для файлов, старше несколько часов) не запускать эту команду? Так у нас все популярные файлы будут со свежими датами доступа и удаляться будут только не популярные. Надіслати Поділитися на інших сайтах More sharing options... sv2109 Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Тоже подумал про touch, но webserver может делать touch? Веб-сервер из /image/cahce выдает товары как статику, а то придется по запросу запускать php-скрипт, который будет делать сначала touch, а потом например кидать redirect-header. Хорошо ли это? ресайзинг картинок происходит через модель ModelToolImage, где есть такой код: class ModelToolImage extends Model { public function resize($filename, $width, $height) { if (!file_exists(DIR_IMAGE . $filename) || !is_file(DIR_IMAGE . $filename)) { return; } $info = pathinfo($filename); $extension = $info['extension']; $old_image = $filename; $new_image = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . $width . 'x' . $height . '.' . $extension; if (!file_exists(DIR_IMAGE . $new_image) || (filemtime(DIR_IMAGE . $old_image) > filemtime(DIR_IMAGE . $new_image))) { // создание нового рисунка } else { // тут добавляем touch } if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) { return HTTPS_IMAGE . $new_image; } else { return HTTP_IMAGE . $new_image; } } } Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Можно и touch, но не у всех линух сервера :) А при экспорте не оригинал нужен? Тут модуль же есть дык он вообще свое разрешение для яндекса делает... и заметьте там правильно указано что это дело лучше что бы работало под КРОНОМ!!! И потом опять товарищь toporchillo через кешь отдать даже сам список... а тут кешь уже не рулит т.к. его надо чистить... Не пытайтесь решить проблему всю целиком!!! Тогда тупо при экспорте товарищу МЕСТА НЕ ХВАТИТ НИКАК и все он попал!!! неужели это так трудно понять? Хотя да куда проще лепить что первое в голову придет... :) Даже при экспорте они нужны все, но как вы НЕ заметели НЕ СРАЗУ! Это то вы хоть понимаете, что даже яндекс за секунду все картинки не запросит или и тут будете спорить?! P.S. аплоад картинок не происходит, читайте про технологию cdn самостоятель, и про индексы/кеширование mysql... Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 15 грудня 2012 Автор Share Опубліковано: 15 грудня 2012 Кстати- насчёт убивания картинок из кеша по крону- интересная идея. Об остальном по- порядку: 1. С количеством товара угадали, чуть больше 70 тысяч. 2. Кэш забивает именно картинок, не mySQL. 3. Нагрузка на магазин пока никакая: и ста посещений в сутки нету (он ещё даже гуглом не проиндексирован). 4. Про хостинг пожирнее- тоже угадали, на этом нахожусь именно из-за дешевизны. считаю, кстати, что тут очень неплохо в плане быстродействия. 5. Когда имел в виду картинки грузить из другого места- предполагалось взять дома статический айпишник (или даже через no-ip.org) и картинки отдавать с домашнего веб-сервера. Пока от этой идеи окончательно не отказался. Но не знаю где чего подпилить в самом магазине. 6. Картинки размером 600х600, в магазине выдаются этого же размера. Но в кэш они всё-равно почему-то попадают. Думаю- написать программулину, которая тупо раз в час убивает из кэша все файлы старше одного часа. По ftp туда забираться, он умеет отдавать дату файла. Но не только по этому признаку, а ещё основываясь на просмотрах из самого магазина, чтобы не убить популярный. Думаю в mySQL базе будет отметка даты-времени последнего просмотра. Если не будет- можно раз в час сбрасывать счётчик просмотров. Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 15 грудня 2012 Share Опубліковано: 15 грудня 2012 (змінено) Есть одни вариант. Пример здесь http://avtokuzov.by/...id_category=63. (сейчас сайт переделан и ссылка уже не актуальна) Магазин правда сделан на Prestashop, а хостинг дешевый (200 р. в месяц) поэтому сам сайт тормозной. Но суть в том, что все картинки товара там на самом хосте отсутствуют. Там товары грузятся примерно раз в 2-3 дня с сайта-донора. Картинки тоже предоставляются как URL на сайте доноре. Так во на сайте получателе я доработал скрипт 404.php, который поднимается каждый раз, как не находится нужный файл (в нашем случае это файл картинки) и в котором собственно возвращается альтернативный URL( и это урл на сайте доноре), из которого и грузится контент в src в тэге img. Ну размеры соответственно задаются версткой. Единственный недостаток - замедление загрузки картинок если они сделаны в высоком разрешении и размеры файлов велики. Змінено 16 січня 2013 користувачем EVMedvedev Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 15 грудня 2012 Автор Share Опубліковано: 15 грудня 2012 Так во на сайте получателе я доработал скрипт 404.php, который поднимается каждый раз, как не находится нужный файл (в нашем случае это файл картинки) и в котором собственно возвращается альтернативный URL( и это урл на сайте доноре), из которого и грузится контент в src в тэге img. Ну размеры соответственно задаются версткой. Единственный недостаток - замедление загрузки картинок если они сделаны в высоком разрешении и размеры файлов велики. Это пять! :) Проблемку решил. У меня есть робот, который обслуживает мой магазин (в том числе общается в соцсетях). Вот он каждый час и чистит кэш. оставляет только 100 самых популярных товаров (берётся из таблицы products в поле view таким запросом: SELECT product_id FROM vanoid.product where viewed>0 order by viewed desc limit 100 ). Единственный возможный минус- может убить картинку, которую только что запрашивали, и запросили ещё раз сразу после чистки кэша. Ну- тогда просто в кэш оно запишется ещё раз. Пока буду тестировать. Ком нужно- вот код. Написано на Delphi. procedure TForm1.Cleancache1Click(Sender: TObject); var q:TADOQuery; SL:TStringList; procedure GoDir(dir:string); var i,ind:integer; List:TStringList; art:integer; begin if CloseAttempt then exit; if not IDFTP1.Connected then IDFTP1.Connect; IDFTP1.ChangeDir(dir); List:=TStringList.create; List.Clear; IDFTP1.List(List,'',false); List.Sort; for i:=0 to List.Count-1 do begin if pos('.',List[i])=0 then GoDir(dir+'/'+List[i]); if pos('.jpg',List[i])=length(List[i])-4+1 then begin art:=strtoint(Replace(Replace(dir,'/domains/тратата.ru/image/cache/data/img',''),'/','')); if not SL.Find(inttostr(art),ind) then begin AddLog('Deleting from cache: '+List[i]); IDFTP1.Delete(List[i]); end else begin AddLog(List[i]+' not deleted as top 100 popular'); end; end; end; List.Clear; IDFTP1.List(List,'',false); List.Sort; if list.Count=2 then begin IDFTP1.ChangeDir('..'); IDFTP1.RemoveDir(dir); end; List.Free; end; begin AddLog('Cleaning image cache'); q:=TADOquery.Create(nil); q.Connection:=MySqlConnection; q.SQL.Add('SELECT product_id FROM vanoid.product where viewed>0 order by viewed desc limit 100'); q.Open; SL:=TStringList.Create; while not q.Eof do begin SL.Add(q.Fields[0].asstring); q.Next; end; SL.Sort; q.free; GoDir('/domains/тратата.ru/image/cache/data/img'); SL.Free; AddLog('Cleaning image cache complete'); end; Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 15 грудня 2012 Share Опубліковано: 15 грудня 2012 Какой модуль? Этот? http://opencartforum...BA%D0%B5%D1%82/ :-) Мне тяжело понять, когда так мало запятых и много "!!!". Угу он самый... что у всех клиентов при обработке некислые тормоза на серваках как вы утверждаете выше или таки вы еще раз ошиблись тут? 2Vanoid при 100 человеках в сутки, думаю кеш можно и раз в неделю чистить и не морочится на mysql и на все прочее... К стате что бы touch запустить нужне же sheel-exeс или другой исполнитель... они обычно на виртуалах отключены дабы не плодить левую нагрузку... т.ч. остаются отметки в mysql или не париться на время последнего обращения вообще... Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 16 грудня 2012 Share Опубліковано: 16 грудня 2012 Ком нужно- вот код. Написано на Delphi. OMG!! совет: добавьте индекс для viewed Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 16 грудня 2012 Автор Share Опубліковано: 16 грудня 2012 2Vanoid при 100 человеках в сутки, думаю кеш можно и раз в неделю чистить и не морочится на mysql и на все прочее... Это пока. Очень надеюсь, что потом будет больше :) Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 16 грудня 2012 Автор Share Опубліковано: 16 грудня 2012 OMG!! совет: добавьте индекс для viewed Пока никаких тормозов не замечено. Информацию выводит мгновенно. Пока не столкнусь с проблемой- добавлять не буду :) А по поводу дельфи- отчего такие восклицания??? На хостинге нет ни крона, ни возможности чего бы то ни было ещё мудрить. Дешёвый хостинг :) Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 16 грудня 2012 Share Опубліковано: 16 грудня 2012 Добавьте, добавьте индекс это будет правильнее... по мере роста (изменения этого параметра) mysql может больше жрать CPU :) Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 20 грудня 2012 Автор Share Опубліковано: 20 грудня 2012 Ok, создал. "create index ix_viewed on product (viewed)". Пока никакой разницы не заметил :) Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Модуль Fast Cache PRO - Increase Performance + Scalability (Кэширование и улучшение производительности сайта) [Поддержка] Автор: kirians, 21 жовтня 2021 cache fast cache (і ще %d) Теги: cache fast cache кэш кэш cache кэширование кэш cache оптимизация кеш кешування 0 відповідей 646 переглядів kirians 3 листопада 2021 Модуль [Поддержка] 1 2 3 4 75 Автор: markimax, 15 березня 2017 cache seo cms (і ще %d) Теги: cache seo cms кеширование кеш страниц кеш контроллеров кеш моделей скорость jet cache оптимизация запросы тормозит pagespeed 1 852 відповіді 239 852 перегляди markimax 13 жовтня модуль [Поддержка] CART CACHE - кэшируем корзину (cart.php => getProducts) 1 2 3 Автор: kJlukOo, 24 серпня 2018 cart cache cache (і ще %d) Теги: cart cache cache корзина кеширование module 66 відповідей 9 004 перегляди AlektroNik 8 жовтня 2021 SmartCache розширена версія системи кешування із захистом від ефекту "собача купа" та іншими "смаколиками" Автор: Vladzimir, 29 липня 2021 cache boost 0 коментарів 7 495 переглядів Vladzimir 14 червня 2021 Модуль SmartCache розширена версія системи кешування із захистом від ефекту "собача купа" та іншими "смаколиками" [Поддержка] Автор: Vladzimir, 14 червня 2021 cache boost 23 відповіді 2 541 перегляд sh1sh1n 6 листопада Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Ограничение кэша магазина Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
vikingshop Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Новый хостинг найдите! 20гб вообще ни о чем в наше время... или скрипт по крону пускайте который бы чистил, а оставлял бы файлы скажем за последний день... Надіслати Поділитися на інших сайтах More sharing options...
freelancer Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Как вариант (если используется много похожих размеров) можно оставить на сайте несколько основных размеров, а остальные менять средствами css. я бы использовал этот вариант Надіслати Поділитися на інших сайтах More sharing options... sv2109 Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Скрипт по крону - самый очевидный вариант, но не рабочий, к сожалению. Почему не рабочий? Пишется скрипт, который по расписанию, например раз час заходит в папку кеша рисунков и удаляет оттуда самые старые пока размер папки не будет меньше определенного размера или дата файла меньше определенной даты. В чем проблема? Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Почему не рабочий? Не рабочий потому что, удаление одного файла - это 100% загрузка на CPU :) А так по сути господа решайте... или место на диске или... вот такая жопа... Можно вообще cdn прикрутить и сразу удалять файлы... повторно они могут не понадобится :) 2toporchillo: почитайте вообще что такое кеширование, кеширование в mysql и для чего оно нужно... а то второй раз влезаете, а суть проблемы не догоняете, т.к. не понимаете как все работает... Надіслати Поділитися на інших сайтах More sharing options... sv2109 Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Не рабочий потому что, удаление одного файла - это 100% загрузка на CPU :) Какая 100% загрузка, вы о чем? Мы же не будет удалять каждый час по миллиону файлов? Если удалять только устаревшие файлы и запускать крон каждый час то сколько файлов устареет за час? 10, 100, 1000? Сколько времени займет для команды rm удалить 1000 файлов? 1 секунда? Так в чем проблема? 1 Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Да я то понял, это шутка такая была... в конце же смайлик :) Вот вы ему это подробно и расписали за меня, а то он бред с умным видом не только тут несет... Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 И кэш тут файловый, а не базы. К стати, CDN + отказ от кэша картинок возможно неплохой вариант. Расскажите, как работает CDN, можно ее использовать в качестве кэша? И как осуществляется загрузка картинок в CDN? Да вот принцеп один и тот же тока кеши разные как вы заметили таки... оставить то что часто используется... а то что не часто УДАЛИТЬ из КЕША ибо нех жрать место!!! Правильнее конечно же определить когда последний раз открывали эту картинку (заходили на страницу с ней) и если ее не открывали последние сутки то удалить ее... но это ГЕМОРОЙНО!!! Поэтому как я в начале и предложил берем то что старше суток и удаляем... что мы имеем в итоге... нам надо что-то заново создать при заходе на эту страницу... верно? Какова вероятность что тут же нам их придется создать (ВСЕ!)!? Тут все зависит от кол-ва посетителей на сайте... если у человека кеш на 20гб то берем 20.000.000кб делим на 20кб (средний размер) и получаем 1000.000 картинок... предположим у человека 10 картинок на товар... у него 100.000 товара в базе... Берем количество просмотров 10.000 человек, каждый получает по 10 картинок, т.е. за сутки его база должна отработать 1/10 всего... Делим 100.000/24/60 в минуту надо зафигарить 70 картинок, т.е. это чуть больше 1 картинки в секунду, это при том что запрос не попал в кеш... это нагрузка ниипаца просто :) на самом деле если у него есть 10к простмотров, то он скорее купит хостинг где есть хотябы 100гигов места :) Да я то не ошибся форумом, а вот вы не зная даже что такое cdn походу явно имеете ошибку... и ошибка это как в одном анекдоте :) Надіслати Поділитися на інших сайтах More sharing options... sv2109 Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Не нужно забывать так же что далеко не все товары в магазине просматриваются равномерно. Всегда есть какие-то топовые модели или товары по акциям или товары на первых страницах в каталогах, которые просматриваются регулярно (думаю их будет процентов 20) и товары, не очень популярные или которых может вообще не быть на складе и которые просматриваются раз в несколько дней.. (а таких вполне может быть процентов 80) Правильнее конечно же определить когда последний раз открывали эту картинку (заходили на страницу с ней) и если ее не открывали последние сутки то удалить ее... но это ГЕМОРОЙНО!!! А это кстати вариант! Есть такая linux команда - touch, которая меняет время доступа к файлу. Так почему бы во время каждого обращения к файлу (или для файлов, старше несколько часов) не запускать эту команду? Так у нас все популярные файлы будут со свежими датами доступа и удаляться будут только не популярные. Надіслати Поділитися на інших сайтах More sharing options... sv2109 Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Тоже подумал про touch, но webserver может делать touch? Веб-сервер из /image/cahce выдает товары как статику, а то придется по запросу запускать php-скрипт, который будет делать сначала touch, а потом например кидать redirect-header. Хорошо ли это? ресайзинг картинок происходит через модель ModelToolImage, где есть такой код: class ModelToolImage extends Model { public function resize($filename, $width, $height) { if (!file_exists(DIR_IMAGE . $filename) || !is_file(DIR_IMAGE . $filename)) { return; } $info = pathinfo($filename); $extension = $info['extension']; $old_image = $filename; $new_image = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . $width . 'x' . $height . '.' . $extension; if (!file_exists(DIR_IMAGE . $new_image) || (filemtime(DIR_IMAGE . $old_image) > filemtime(DIR_IMAGE . $new_image))) { // создание нового рисунка } else { // тут добавляем touch } if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) { return HTTPS_IMAGE . $new_image; } else { return HTTP_IMAGE . $new_image; } } } Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Можно и touch, но не у всех линух сервера :) А при экспорте не оригинал нужен? Тут модуль же есть дык он вообще свое разрешение для яндекса делает... и заметьте там правильно указано что это дело лучше что бы работало под КРОНОМ!!! И потом опять товарищь toporchillo через кешь отдать даже сам список... а тут кешь уже не рулит т.к. его надо чистить... Не пытайтесь решить проблему всю целиком!!! Тогда тупо при экспорте товарищу МЕСТА НЕ ХВАТИТ НИКАК и все он попал!!! неужели это так трудно понять? Хотя да куда проще лепить что первое в голову придет... :) Даже при экспорте они нужны все, но как вы НЕ заметели НЕ СРАЗУ! Это то вы хоть понимаете, что даже яндекс за секунду все картинки не запросит или и тут будете спорить?! P.S. аплоад картинок не происходит, читайте про технологию cdn самостоятель, и про индексы/кеширование mysql... Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 15 грудня 2012 Автор Share Опубліковано: 15 грудня 2012 Кстати- насчёт убивания картинок из кеша по крону- интересная идея. Об остальном по- порядку: 1. С количеством товара угадали, чуть больше 70 тысяч. 2. Кэш забивает именно картинок, не mySQL. 3. Нагрузка на магазин пока никакая: и ста посещений в сутки нету (он ещё даже гуглом не проиндексирован). 4. Про хостинг пожирнее- тоже угадали, на этом нахожусь именно из-за дешевизны. считаю, кстати, что тут очень неплохо в плане быстродействия. 5. Когда имел в виду картинки грузить из другого места- предполагалось взять дома статический айпишник (или даже через no-ip.org) и картинки отдавать с домашнего веб-сервера. Пока от этой идеи окончательно не отказался. Но не знаю где чего подпилить в самом магазине. 6. Картинки размером 600х600, в магазине выдаются этого же размера. Но в кэш они всё-равно почему-то попадают. Думаю- написать программулину, которая тупо раз в час убивает из кэша все файлы старше одного часа. По ftp туда забираться, он умеет отдавать дату файла. Но не только по этому признаку, а ещё основываясь на просмотрах из самого магазина, чтобы не убить популярный. Думаю в mySQL базе будет отметка даты-времени последнего просмотра. Если не будет- можно раз в час сбрасывать счётчик просмотров. Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 15 грудня 2012 Share Опубліковано: 15 грудня 2012 (змінено) Есть одни вариант. Пример здесь http://avtokuzov.by/...id_category=63. (сейчас сайт переделан и ссылка уже не актуальна) Магазин правда сделан на Prestashop, а хостинг дешевый (200 р. в месяц) поэтому сам сайт тормозной. Но суть в том, что все картинки товара там на самом хосте отсутствуют. Там товары грузятся примерно раз в 2-3 дня с сайта-донора. Картинки тоже предоставляются как URL на сайте доноре. Так во на сайте получателе я доработал скрипт 404.php, который поднимается каждый раз, как не находится нужный файл (в нашем случае это файл картинки) и в котором собственно возвращается альтернативный URL( и это урл на сайте доноре), из которого и грузится контент в src в тэге img. Ну размеры соответственно задаются версткой. Единственный недостаток - замедление загрузки картинок если они сделаны в высоком разрешении и размеры файлов велики. Змінено 16 січня 2013 користувачем EVMedvedev Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 15 грудня 2012 Автор Share Опубліковано: 15 грудня 2012 Так во на сайте получателе я доработал скрипт 404.php, который поднимается каждый раз, как не находится нужный файл (в нашем случае это файл картинки) и в котором собственно возвращается альтернативный URL( и это урл на сайте доноре), из которого и грузится контент в src в тэге img. Ну размеры соответственно задаются версткой. Единственный недостаток - замедление загрузки картинок если они сделаны в высоком разрешении и размеры файлов велики. Это пять! :) Проблемку решил. У меня есть робот, который обслуживает мой магазин (в том числе общается в соцсетях). Вот он каждый час и чистит кэш. оставляет только 100 самых популярных товаров (берётся из таблицы products в поле view таким запросом: SELECT product_id FROM vanoid.product where viewed>0 order by viewed desc limit 100 ). Единственный возможный минус- может убить картинку, которую только что запрашивали, и запросили ещё раз сразу после чистки кэша. Ну- тогда просто в кэш оно запишется ещё раз. Пока буду тестировать. Ком нужно- вот код. Написано на Delphi. procedure TForm1.Cleancache1Click(Sender: TObject); var q:TADOQuery; SL:TStringList; procedure GoDir(dir:string); var i,ind:integer; List:TStringList; art:integer; begin if CloseAttempt then exit; if not IDFTP1.Connected then IDFTP1.Connect; IDFTP1.ChangeDir(dir); List:=TStringList.create; List.Clear; IDFTP1.List(List,'',false); List.Sort; for i:=0 to List.Count-1 do begin if pos('.',List[i])=0 then GoDir(dir+'/'+List[i]); if pos('.jpg',List[i])=length(List[i])-4+1 then begin art:=strtoint(Replace(Replace(dir,'/domains/тратата.ru/image/cache/data/img',''),'/','')); if not SL.Find(inttostr(art),ind) then begin AddLog('Deleting from cache: '+List[i]); IDFTP1.Delete(List[i]); end else begin AddLog(List[i]+' not deleted as top 100 popular'); end; end; end; List.Clear; IDFTP1.List(List,'',false); List.Sort; if list.Count=2 then begin IDFTP1.ChangeDir('..'); IDFTP1.RemoveDir(dir); end; List.Free; end; begin AddLog('Cleaning image cache'); q:=TADOquery.Create(nil); q.Connection:=MySqlConnection; q.SQL.Add('SELECT product_id FROM vanoid.product where viewed>0 order by viewed desc limit 100'); q.Open; SL:=TStringList.Create; while not q.Eof do begin SL.Add(q.Fields[0].asstring); q.Next; end; SL.Sort; q.free; GoDir('/domains/тратата.ru/image/cache/data/img'); SL.Free; AddLog('Cleaning image cache complete'); end; Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 15 грудня 2012 Share Опубліковано: 15 грудня 2012 Какой модуль? Этот? http://opencartforum...BA%D0%B5%D1%82/ :-) Мне тяжело понять, когда так мало запятых и много "!!!". Угу он самый... что у всех клиентов при обработке некислые тормоза на серваках как вы утверждаете выше или таки вы еще раз ошиблись тут? 2Vanoid при 100 человеках в сутки, думаю кеш можно и раз в неделю чистить и не морочится на mysql и на все прочее... К стате что бы touch запустить нужне же sheel-exeс или другой исполнитель... они обычно на виртуалах отключены дабы не плодить левую нагрузку... т.ч. остаются отметки в mysql или не париться на время последнего обращения вообще... Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 16 грудня 2012 Share Опубліковано: 16 грудня 2012 Ком нужно- вот код. Написано на Delphi. OMG!! совет: добавьте индекс для viewed Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 16 грудня 2012 Автор Share Опубліковано: 16 грудня 2012 2Vanoid при 100 человеках в сутки, думаю кеш можно и раз в неделю чистить и не морочится на mysql и на все прочее... Это пока. Очень надеюсь, что потом будет больше :) Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 16 грудня 2012 Автор Share Опубліковано: 16 грудня 2012 OMG!! совет: добавьте индекс для viewed Пока никаких тормозов не замечено. Информацию выводит мгновенно. Пока не столкнусь с проблемой- добавлять не буду :) А по поводу дельфи- отчего такие восклицания??? На хостинге нет ни крона, ни возможности чего бы то ни было ещё мудрить. Дешёвый хостинг :) Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 16 грудня 2012 Share Опубліковано: 16 грудня 2012 Добавьте, добавьте индекс это будет правильнее... по мере роста (изменения этого параметра) mysql может больше жрать CPU :) Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 20 грудня 2012 Автор Share Опубліковано: 20 грудня 2012 Ok, создал. "create index ix_viewed on product (viewed)". Пока никакой разницы не заметил :) Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Модуль Fast Cache PRO - Increase Performance + Scalability (Кэширование и улучшение производительности сайта) [Поддержка] Автор: kirians, 21 жовтня 2021 cache fast cache (і ще %d) Теги: cache fast cache кэш кэш cache кэширование кэш cache оптимизация кеш кешування 0 відповідей 646 переглядів kirians 3 листопада 2021 Модуль [Поддержка] 1 2 3 4 75 Автор: markimax, 15 березня 2017 cache seo cms (і ще %d) Теги: cache seo cms кеширование кеш страниц кеш контроллеров кеш моделей скорость jet cache оптимизация запросы тормозит pagespeed 1 852 відповіді 239 852 перегляди markimax 13 жовтня модуль [Поддержка] CART CACHE - кэшируем корзину (cart.php => getProducts) 1 2 3 Автор: kJlukOo, 24 серпня 2018 cart cache cache (і ще %d) Теги: cart cache cache корзина кеширование module 66 відповідей 9 004 перегляди AlektroNik 8 жовтня 2021 SmartCache розширена версія системи кешування із захистом від ефекту "собача купа" та іншими "смаколиками" Автор: Vladzimir, 29 липня 2021 cache boost 0 коментарів 7 495 переглядів Vladzimir 14 червня 2021 Модуль SmartCache розширена версія системи кешування із захистом від ефекту "собача купа" та іншими "смаколиками" [Поддержка] Автор: Vladzimir, 14 червня 2021 cache boost 23 відповіді 2 541 перегляд sh1sh1n 6 листопада Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Ограничение кэша магазина Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
sv2109 Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Скрипт по крону - самый очевидный вариант, но не рабочий, к сожалению. Почему не рабочий? Пишется скрипт, который по расписанию, например раз час заходит в папку кеша рисунков и удаляет оттуда самые старые пока размер папки не будет меньше определенного размера или дата файла меньше определенной даты. В чем проблема? Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Почему не рабочий? Не рабочий потому что, удаление одного файла - это 100% загрузка на CPU :) А так по сути господа решайте... или место на диске или... вот такая жопа... Можно вообще cdn прикрутить и сразу удалять файлы... повторно они могут не понадобится :) 2toporchillo: почитайте вообще что такое кеширование, кеширование в mysql и для чего оно нужно... а то второй раз влезаете, а суть проблемы не догоняете, т.к. не понимаете как все работает... Надіслати Поділитися на інших сайтах More sharing options... sv2109 Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Не рабочий потому что, удаление одного файла - это 100% загрузка на CPU :) Какая 100% загрузка, вы о чем? Мы же не будет удалять каждый час по миллиону файлов? Если удалять только устаревшие файлы и запускать крон каждый час то сколько файлов устареет за час? 10, 100, 1000? Сколько времени займет для команды rm удалить 1000 файлов? 1 секунда? Так в чем проблема? 1 Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Да я то понял, это шутка такая была... в конце же смайлик :) Вот вы ему это подробно и расписали за меня, а то он бред с умным видом не только тут несет... Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 И кэш тут файловый, а не базы. К стати, CDN + отказ от кэша картинок возможно неплохой вариант. Расскажите, как работает CDN, можно ее использовать в качестве кэша? И как осуществляется загрузка картинок в CDN? Да вот принцеп один и тот же тока кеши разные как вы заметили таки... оставить то что часто используется... а то что не часто УДАЛИТЬ из КЕША ибо нех жрать место!!! Правильнее конечно же определить когда последний раз открывали эту картинку (заходили на страницу с ней) и если ее не открывали последние сутки то удалить ее... но это ГЕМОРОЙНО!!! Поэтому как я в начале и предложил берем то что старше суток и удаляем... что мы имеем в итоге... нам надо что-то заново создать при заходе на эту страницу... верно? Какова вероятность что тут же нам их придется создать (ВСЕ!)!? Тут все зависит от кол-ва посетителей на сайте... если у человека кеш на 20гб то берем 20.000.000кб делим на 20кб (средний размер) и получаем 1000.000 картинок... предположим у человека 10 картинок на товар... у него 100.000 товара в базе... Берем количество просмотров 10.000 человек, каждый получает по 10 картинок, т.е. за сутки его база должна отработать 1/10 всего... Делим 100.000/24/60 в минуту надо зафигарить 70 картинок, т.е. это чуть больше 1 картинки в секунду, это при том что запрос не попал в кеш... это нагрузка ниипаца просто :) на самом деле если у него есть 10к простмотров, то он скорее купит хостинг где есть хотябы 100гигов места :) Да я то не ошибся форумом, а вот вы не зная даже что такое cdn походу явно имеете ошибку... и ошибка это как в одном анекдоте :) Надіслати Поділитися на інших сайтах More sharing options... sv2109 Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Не нужно забывать так же что далеко не все товары в магазине просматриваются равномерно. Всегда есть какие-то топовые модели или товары по акциям или товары на первых страницах в каталогах, которые просматриваются регулярно (думаю их будет процентов 20) и товары, не очень популярные или которых может вообще не быть на складе и которые просматриваются раз в несколько дней.. (а таких вполне может быть процентов 80) Правильнее конечно же определить когда последний раз открывали эту картинку (заходили на страницу с ней) и если ее не открывали последние сутки то удалить ее... но это ГЕМОРОЙНО!!! А это кстати вариант! Есть такая linux команда - touch, которая меняет время доступа к файлу. Так почему бы во время каждого обращения к файлу (или для файлов, старше несколько часов) не запускать эту команду? Так у нас все популярные файлы будут со свежими датами доступа и удаляться будут только не популярные. Надіслати Поділитися на інших сайтах More sharing options... sv2109 Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Тоже подумал про touch, но webserver может делать touch? Веб-сервер из /image/cahce выдает товары как статику, а то придется по запросу запускать php-скрипт, который будет делать сначала touch, а потом например кидать redirect-header. Хорошо ли это? ресайзинг картинок происходит через модель ModelToolImage, где есть такой код: class ModelToolImage extends Model { public function resize($filename, $width, $height) { if (!file_exists(DIR_IMAGE . $filename) || !is_file(DIR_IMAGE . $filename)) { return; } $info = pathinfo($filename); $extension = $info['extension']; $old_image = $filename; $new_image = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . $width . 'x' . $height . '.' . $extension; if (!file_exists(DIR_IMAGE . $new_image) || (filemtime(DIR_IMAGE . $old_image) > filemtime(DIR_IMAGE . $new_image))) { // создание нового рисунка } else { // тут добавляем touch } if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) { return HTTPS_IMAGE . $new_image; } else { return HTTP_IMAGE . $new_image; } } } Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Можно и touch, но не у всех линух сервера :) А при экспорте не оригинал нужен? Тут модуль же есть дык он вообще свое разрешение для яндекса делает... и заметьте там правильно указано что это дело лучше что бы работало под КРОНОМ!!! И потом опять товарищь toporchillo через кешь отдать даже сам список... а тут кешь уже не рулит т.к. его надо чистить... Не пытайтесь решить проблему всю целиком!!! Тогда тупо при экспорте товарищу МЕСТА НЕ ХВАТИТ НИКАК и все он попал!!! неужели это так трудно понять? Хотя да куда проще лепить что первое в голову придет... :) Даже при экспорте они нужны все, но как вы НЕ заметели НЕ СРАЗУ! Это то вы хоть понимаете, что даже яндекс за секунду все картинки не запросит или и тут будете спорить?! P.S. аплоад картинок не происходит, читайте про технологию cdn самостоятель, и про индексы/кеширование mysql... Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 15 грудня 2012 Автор Share Опубліковано: 15 грудня 2012 Кстати- насчёт убивания картинок из кеша по крону- интересная идея. Об остальном по- порядку: 1. С количеством товара угадали, чуть больше 70 тысяч. 2. Кэш забивает именно картинок, не mySQL. 3. Нагрузка на магазин пока никакая: и ста посещений в сутки нету (он ещё даже гуглом не проиндексирован). 4. Про хостинг пожирнее- тоже угадали, на этом нахожусь именно из-за дешевизны. считаю, кстати, что тут очень неплохо в плане быстродействия. 5. Когда имел в виду картинки грузить из другого места- предполагалось взять дома статический айпишник (или даже через no-ip.org) и картинки отдавать с домашнего веб-сервера. Пока от этой идеи окончательно не отказался. Но не знаю где чего подпилить в самом магазине. 6. Картинки размером 600х600, в магазине выдаются этого же размера. Но в кэш они всё-равно почему-то попадают. Думаю- написать программулину, которая тупо раз в час убивает из кэша все файлы старше одного часа. По ftp туда забираться, он умеет отдавать дату файла. Но не только по этому признаку, а ещё основываясь на просмотрах из самого магазина, чтобы не убить популярный. Думаю в mySQL базе будет отметка даты-времени последнего просмотра. Если не будет- можно раз в час сбрасывать счётчик просмотров. Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 15 грудня 2012 Share Опубліковано: 15 грудня 2012 (змінено) Есть одни вариант. Пример здесь http://avtokuzov.by/...id_category=63. (сейчас сайт переделан и ссылка уже не актуальна) Магазин правда сделан на Prestashop, а хостинг дешевый (200 р. в месяц) поэтому сам сайт тормозной. Но суть в том, что все картинки товара там на самом хосте отсутствуют. Там товары грузятся примерно раз в 2-3 дня с сайта-донора. Картинки тоже предоставляются как URL на сайте доноре. Так во на сайте получателе я доработал скрипт 404.php, который поднимается каждый раз, как не находится нужный файл (в нашем случае это файл картинки) и в котором собственно возвращается альтернативный URL( и это урл на сайте доноре), из которого и грузится контент в src в тэге img. Ну размеры соответственно задаются версткой. Единственный недостаток - замедление загрузки картинок если они сделаны в высоком разрешении и размеры файлов велики. Змінено 16 січня 2013 користувачем EVMedvedev Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 15 грудня 2012 Автор Share Опубліковано: 15 грудня 2012 Так во на сайте получателе я доработал скрипт 404.php, который поднимается каждый раз, как не находится нужный файл (в нашем случае это файл картинки) и в котором собственно возвращается альтернативный URL( и это урл на сайте доноре), из которого и грузится контент в src в тэге img. Ну размеры соответственно задаются версткой. Единственный недостаток - замедление загрузки картинок если они сделаны в высоком разрешении и размеры файлов велики. Это пять! :) Проблемку решил. У меня есть робот, который обслуживает мой магазин (в том числе общается в соцсетях). Вот он каждый час и чистит кэш. оставляет только 100 самых популярных товаров (берётся из таблицы products в поле view таким запросом: SELECT product_id FROM vanoid.product where viewed>0 order by viewed desc limit 100 ). Единственный возможный минус- может убить картинку, которую только что запрашивали, и запросили ещё раз сразу после чистки кэша. Ну- тогда просто в кэш оно запишется ещё раз. Пока буду тестировать. Ком нужно- вот код. Написано на Delphi. procedure TForm1.Cleancache1Click(Sender: TObject); var q:TADOQuery; SL:TStringList; procedure GoDir(dir:string); var i,ind:integer; List:TStringList; art:integer; begin if CloseAttempt then exit; if not IDFTP1.Connected then IDFTP1.Connect; IDFTP1.ChangeDir(dir); List:=TStringList.create; List.Clear; IDFTP1.List(List,'',false); List.Sort; for i:=0 to List.Count-1 do begin if pos('.',List[i])=0 then GoDir(dir+'/'+List[i]); if pos('.jpg',List[i])=length(List[i])-4+1 then begin art:=strtoint(Replace(Replace(dir,'/domains/тратата.ru/image/cache/data/img',''),'/','')); if not SL.Find(inttostr(art),ind) then begin AddLog('Deleting from cache: '+List[i]); IDFTP1.Delete(List[i]); end else begin AddLog(List[i]+' not deleted as top 100 popular'); end; end; end; List.Clear; IDFTP1.List(List,'',false); List.Sort; if list.Count=2 then begin IDFTP1.ChangeDir('..'); IDFTP1.RemoveDir(dir); end; List.Free; end; begin AddLog('Cleaning image cache'); q:=TADOquery.Create(nil); q.Connection:=MySqlConnection; q.SQL.Add('SELECT product_id FROM vanoid.product where viewed>0 order by viewed desc limit 100'); q.Open; SL:=TStringList.Create; while not q.Eof do begin SL.Add(q.Fields[0].asstring); q.Next; end; SL.Sort; q.free; GoDir('/domains/тратата.ru/image/cache/data/img'); SL.Free; AddLog('Cleaning image cache complete'); end; Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 15 грудня 2012 Share Опубліковано: 15 грудня 2012 Какой модуль? Этот? http://opencartforum...BA%D0%B5%D1%82/ :-) Мне тяжело понять, когда так мало запятых и много "!!!". Угу он самый... что у всех клиентов при обработке некислые тормоза на серваках как вы утверждаете выше или таки вы еще раз ошиблись тут? 2Vanoid при 100 человеках в сутки, думаю кеш можно и раз в неделю чистить и не морочится на mysql и на все прочее... К стате что бы touch запустить нужне же sheel-exeс или другой исполнитель... они обычно на виртуалах отключены дабы не плодить левую нагрузку... т.ч. остаются отметки в mysql или не париться на время последнего обращения вообще... Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 16 грудня 2012 Share Опубліковано: 16 грудня 2012 Ком нужно- вот код. Написано на Delphi. OMG!! совет: добавьте индекс для viewed Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 16 грудня 2012 Автор Share Опубліковано: 16 грудня 2012 2Vanoid при 100 человеках в сутки, думаю кеш можно и раз в неделю чистить и не морочится на mysql и на все прочее... Это пока. Очень надеюсь, что потом будет больше :) Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 16 грудня 2012 Автор Share Опубліковано: 16 грудня 2012 OMG!! совет: добавьте индекс для viewed Пока никаких тормозов не замечено. Информацию выводит мгновенно. Пока не столкнусь с проблемой- добавлять не буду :) А по поводу дельфи- отчего такие восклицания??? На хостинге нет ни крона, ни возможности чего бы то ни было ещё мудрить. Дешёвый хостинг :) Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 16 грудня 2012 Share Опубліковано: 16 грудня 2012 Добавьте, добавьте индекс это будет правильнее... по мере роста (изменения этого параметра) mysql может больше жрать CPU :) Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 20 грудня 2012 Автор Share Опубліковано: 20 грудня 2012 Ok, создал. "create index ix_viewed on product (viewed)". Пока никакой разницы не заметил :) Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Модуль Fast Cache PRO - Increase Performance + Scalability (Кэширование и улучшение производительности сайта) [Поддержка] Автор: kirians, 21 жовтня 2021 cache fast cache (і ще %d) Теги: cache fast cache кэш кэш cache кэширование кэш cache оптимизация кеш кешування 0 відповідей 646 переглядів kirians 3 листопада 2021 Модуль [Поддержка] 1 2 3 4 75 Автор: markimax, 15 березня 2017 cache seo cms (і ще %d) Теги: cache seo cms кеширование кеш страниц кеш контроллеров кеш моделей скорость jet cache оптимизация запросы тормозит pagespeed 1 852 відповіді 239 852 перегляди markimax 13 жовтня модуль [Поддержка] CART CACHE - кэшируем корзину (cart.php => getProducts) 1 2 3 Автор: kJlukOo, 24 серпня 2018 cart cache cache (і ще %d) Теги: cart cache cache корзина кеширование module 66 відповідей 9 004 перегляди AlektroNik 8 жовтня 2021 SmartCache розширена версія системи кешування із захистом від ефекту "собача купа" та іншими "смаколиками" Автор: Vladzimir, 29 липня 2021 cache boost 0 коментарів 7 495 переглядів Vladzimir 14 червня 2021 Модуль SmartCache розширена версія системи кешування із захистом від ефекту "собача купа" та іншими "смаколиками" [Поддержка] Автор: Vladzimir, 14 червня 2021 cache boost 23 відповіді 2 541 перегляд sh1sh1n 6 листопада Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Ограничение кэша магазина Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
vikingshop Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Почему не рабочий? Не рабочий потому что, удаление одного файла - это 100% загрузка на CPU :) А так по сути господа решайте... или место на диске или... вот такая жопа... Можно вообще cdn прикрутить и сразу удалять файлы... повторно они могут не понадобится :) 2toporchillo: почитайте вообще что такое кеширование, кеширование в mysql и для чего оно нужно... а то второй раз влезаете, а суть проблемы не догоняете, т.к. не понимаете как все работает... Надіслати Поділитися на інших сайтах More sharing options...
sv2109 Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Не рабочий потому что, удаление одного файла - это 100% загрузка на CPU :) Какая 100% загрузка, вы о чем? Мы же не будет удалять каждый час по миллиону файлов? Если удалять только устаревшие файлы и запускать крон каждый час то сколько файлов устареет за час? 10, 100, 1000? Сколько времени займет для команды rm удалить 1000 файлов? 1 секунда? Так в чем проблема? 1 Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Да я то понял, это шутка такая была... в конце же смайлик :) Вот вы ему это подробно и расписали за меня, а то он бред с умным видом не только тут несет... Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 И кэш тут файловый, а не базы. К стати, CDN + отказ от кэша картинок возможно неплохой вариант. Расскажите, как работает CDN, можно ее использовать в качестве кэша? И как осуществляется загрузка картинок в CDN? Да вот принцеп один и тот же тока кеши разные как вы заметили таки... оставить то что часто используется... а то что не часто УДАЛИТЬ из КЕША ибо нех жрать место!!! Правильнее конечно же определить когда последний раз открывали эту картинку (заходили на страницу с ней) и если ее не открывали последние сутки то удалить ее... но это ГЕМОРОЙНО!!! Поэтому как я в начале и предложил берем то что старше суток и удаляем... что мы имеем в итоге... нам надо что-то заново создать при заходе на эту страницу... верно? Какова вероятность что тут же нам их придется создать (ВСЕ!)!? Тут все зависит от кол-ва посетителей на сайте... если у человека кеш на 20гб то берем 20.000.000кб делим на 20кб (средний размер) и получаем 1000.000 картинок... предположим у человека 10 картинок на товар... у него 100.000 товара в базе... Берем количество просмотров 10.000 человек, каждый получает по 10 картинок, т.е. за сутки его база должна отработать 1/10 всего... Делим 100.000/24/60 в минуту надо зафигарить 70 картинок, т.е. это чуть больше 1 картинки в секунду, это при том что запрос не попал в кеш... это нагрузка ниипаца просто :) на самом деле если у него есть 10к простмотров, то он скорее купит хостинг где есть хотябы 100гигов места :) Да я то не ошибся форумом, а вот вы не зная даже что такое cdn походу явно имеете ошибку... и ошибка это как в одном анекдоте :) Надіслати Поділитися на інших сайтах More sharing options... sv2109 Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Не нужно забывать так же что далеко не все товары в магазине просматриваются равномерно. Всегда есть какие-то топовые модели или товары по акциям или товары на первых страницах в каталогах, которые просматриваются регулярно (думаю их будет процентов 20) и товары, не очень популярные или которых может вообще не быть на складе и которые просматриваются раз в несколько дней.. (а таких вполне может быть процентов 80) Правильнее конечно же определить когда последний раз открывали эту картинку (заходили на страницу с ней) и если ее не открывали последние сутки то удалить ее... но это ГЕМОРОЙНО!!! А это кстати вариант! Есть такая linux команда - touch, которая меняет время доступа к файлу. Так почему бы во время каждого обращения к файлу (или для файлов, старше несколько часов) не запускать эту команду? Так у нас все популярные файлы будут со свежими датами доступа и удаляться будут только не популярные. Надіслати Поділитися на інших сайтах More sharing options... sv2109 Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Тоже подумал про touch, но webserver может делать touch? Веб-сервер из /image/cahce выдает товары как статику, а то придется по запросу запускать php-скрипт, который будет делать сначала touch, а потом например кидать redirect-header. Хорошо ли это? ресайзинг картинок происходит через модель ModelToolImage, где есть такой код: class ModelToolImage extends Model { public function resize($filename, $width, $height) { if (!file_exists(DIR_IMAGE . $filename) || !is_file(DIR_IMAGE . $filename)) { return; } $info = pathinfo($filename); $extension = $info['extension']; $old_image = $filename; $new_image = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . $width . 'x' . $height . '.' . $extension; if (!file_exists(DIR_IMAGE . $new_image) || (filemtime(DIR_IMAGE . $old_image) > filemtime(DIR_IMAGE . $new_image))) { // создание нового рисунка } else { // тут добавляем touch } if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) { return HTTPS_IMAGE . $new_image; } else { return HTTP_IMAGE . $new_image; } } } Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Можно и touch, но не у всех линух сервера :) А при экспорте не оригинал нужен? Тут модуль же есть дык он вообще свое разрешение для яндекса делает... и заметьте там правильно указано что это дело лучше что бы работало под КРОНОМ!!! И потом опять товарищь toporchillo через кешь отдать даже сам список... а тут кешь уже не рулит т.к. его надо чистить... Не пытайтесь решить проблему всю целиком!!! Тогда тупо при экспорте товарищу МЕСТА НЕ ХВАТИТ НИКАК и все он попал!!! неужели это так трудно понять? Хотя да куда проще лепить что первое в голову придет... :) Даже при экспорте они нужны все, но как вы НЕ заметели НЕ СРАЗУ! Это то вы хоть понимаете, что даже яндекс за секунду все картинки не запросит или и тут будете спорить?! P.S. аплоад картинок не происходит, читайте про технологию cdn самостоятель, и про индексы/кеширование mysql... Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 15 грудня 2012 Автор Share Опубліковано: 15 грудня 2012 Кстати- насчёт убивания картинок из кеша по крону- интересная идея. Об остальном по- порядку: 1. С количеством товара угадали, чуть больше 70 тысяч. 2. Кэш забивает именно картинок, не mySQL. 3. Нагрузка на магазин пока никакая: и ста посещений в сутки нету (он ещё даже гуглом не проиндексирован). 4. Про хостинг пожирнее- тоже угадали, на этом нахожусь именно из-за дешевизны. считаю, кстати, что тут очень неплохо в плане быстродействия. 5. Когда имел в виду картинки грузить из другого места- предполагалось взять дома статический айпишник (или даже через no-ip.org) и картинки отдавать с домашнего веб-сервера. Пока от этой идеи окончательно не отказался. Но не знаю где чего подпилить в самом магазине. 6. Картинки размером 600х600, в магазине выдаются этого же размера. Но в кэш они всё-равно почему-то попадают. Думаю- написать программулину, которая тупо раз в час убивает из кэша все файлы старше одного часа. По ftp туда забираться, он умеет отдавать дату файла. Но не только по этому признаку, а ещё основываясь на просмотрах из самого магазина, чтобы не убить популярный. Думаю в mySQL базе будет отметка даты-времени последнего просмотра. Если не будет- можно раз в час сбрасывать счётчик просмотров. Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 15 грудня 2012 Share Опубліковано: 15 грудня 2012 (змінено) Есть одни вариант. Пример здесь http://avtokuzov.by/...id_category=63. (сейчас сайт переделан и ссылка уже не актуальна) Магазин правда сделан на Prestashop, а хостинг дешевый (200 р. в месяц) поэтому сам сайт тормозной. Но суть в том, что все картинки товара там на самом хосте отсутствуют. Там товары грузятся примерно раз в 2-3 дня с сайта-донора. Картинки тоже предоставляются как URL на сайте доноре. Так во на сайте получателе я доработал скрипт 404.php, который поднимается каждый раз, как не находится нужный файл (в нашем случае это файл картинки) и в котором собственно возвращается альтернативный URL( и это урл на сайте доноре), из которого и грузится контент в src в тэге img. Ну размеры соответственно задаются версткой. Единственный недостаток - замедление загрузки картинок если они сделаны в высоком разрешении и размеры файлов велики. Змінено 16 січня 2013 користувачем EVMedvedev Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 15 грудня 2012 Автор Share Опубліковано: 15 грудня 2012 Так во на сайте получателе я доработал скрипт 404.php, который поднимается каждый раз, как не находится нужный файл (в нашем случае это файл картинки) и в котором собственно возвращается альтернативный URL( и это урл на сайте доноре), из которого и грузится контент в src в тэге img. Ну размеры соответственно задаются версткой. Единственный недостаток - замедление загрузки картинок если они сделаны в высоком разрешении и размеры файлов велики. Это пять! :) Проблемку решил. У меня есть робот, который обслуживает мой магазин (в том числе общается в соцсетях). Вот он каждый час и чистит кэш. оставляет только 100 самых популярных товаров (берётся из таблицы products в поле view таким запросом: SELECT product_id FROM vanoid.product where viewed>0 order by viewed desc limit 100 ). Единственный возможный минус- может убить картинку, которую только что запрашивали, и запросили ещё раз сразу после чистки кэша. Ну- тогда просто в кэш оно запишется ещё раз. Пока буду тестировать. Ком нужно- вот код. Написано на Delphi. procedure TForm1.Cleancache1Click(Sender: TObject); var q:TADOQuery; SL:TStringList; procedure GoDir(dir:string); var i,ind:integer; List:TStringList; art:integer; begin if CloseAttempt then exit; if not IDFTP1.Connected then IDFTP1.Connect; IDFTP1.ChangeDir(dir); List:=TStringList.create; List.Clear; IDFTP1.List(List,'',false); List.Sort; for i:=0 to List.Count-1 do begin if pos('.',List[i])=0 then GoDir(dir+'/'+List[i]); if pos('.jpg',List[i])=length(List[i])-4+1 then begin art:=strtoint(Replace(Replace(dir,'/domains/тратата.ru/image/cache/data/img',''),'/','')); if not SL.Find(inttostr(art),ind) then begin AddLog('Deleting from cache: '+List[i]); IDFTP1.Delete(List[i]); end else begin AddLog(List[i]+' not deleted as top 100 popular'); end; end; end; List.Clear; IDFTP1.List(List,'',false); List.Sort; if list.Count=2 then begin IDFTP1.ChangeDir('..'); IDFTP1.RemoveDir(dir); end; List.Free; end; begin AddLog('Cleaning image cache'); q:=TADOquery.Create(nil); q.Connection:=MySqlConnection; q.SQL.Add('SELECT product_id FROM vanoid.product where viewed>0 order by viewed desc limit 100'); q.Open; SL:=TStringList.Create; while not q.Eof do begin SL.Add(q.Fields[0].asstring); q.Next; end; SL.Sort; q.free; GoDir('/domains/тратата.ru/image/cache/data/img'); SL.Free; AddLog('Cleaning image cache complete'); end; Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 15 грудня 2012 Share Опубліковано: 15 грудня 2012 Какой модуль? Этот? http://opencartforum...BA%D0%B5%D1%82/ :-) Мне тяжело понять, когда так мало запятых и много "!!!". Угу он самый... что у всех клиентов при обработке некислые тормоза на серваках как вы утверждаете выше или таки вы еще раз ошиблись тут? 2Vanoid при 100 человеках в сутки, думаю кеш можно и раз в неделю чистить и не морочится на mysql и на все прочее... К стате что бы touch запустить нужне же sheel-exeс или другой исполнитель... они обычно на виртуалах отключены дабы не плодить левую нагрузку... т.ч. остаются отметки в mysql или не париться на время последнего обращения вообще... Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 16 грудня 2012 Share Опубліковано: 16 грудня 2012 Ком нужно- вот код. Написано на Delphi. OMG!! совет: добавьте индекс для viewed Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 16 грудня 2012 Автор Share Опубліковано: 16 грудня 2012 2Vanoid при 100 человеках в сутки, думаю кеш можно и раз в неделю чистить и не морочится на mysql и на все прочее... Это пока. Очень надеюсь, что потом будет больше :) Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 16 грудня 2012 Автор Share Опубліковано: 16 грудня 2012 OMG!! совет: добавьте индекс для viewed Пока никаких тормозов не замечено. Информацию выводит мгновенно. Пока не столкнусь с проблемой- добавлять не буду :) А по поводу дельфи- отчего такие восклицания??? На хостинге нет ни крона, ни возможности чего бы то ни было ещё мудрить. Дешёвый хостинг :) Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 16 грудня 2012 Share Опубліковано: 16 грудня 2012 Добавьте, добавьте индекс это будет правильнее... по мере роста (изменения этого параметра) mysql может больше жрать CPU :) Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 20 грудня 2012 Автор Share Опубліковано: 20 грудня 2012 Ok, создал. "create index ix_viewed on product (viewed)". Пока никакой разницы не заметил :) Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Модуль Fast Cache PRO - Increase Performance + Scalability (Кэширование и улучшение производительности сайта) [Поддержка] Автор: kirians, 21 жовтня 2021 cache fast cache (і ще %d) Теги: cache fast cache кэш кэш cache кэширование кэш cache оптимизация кеш кешування 0 відповідей 646 переглядів kirians 3 листопада 2021 Модуль [Поддержка] 1 2 3 4 75 Автор: markimax, 15 березня 2017 cache seo cms (і ще %d) Теги: cache seo cms кеширование кеш страниц кеш контроллеров кеш моделей скорость jet cache оптимизация запросы тормозит pagespeed 1 852 відповіді 239 852 перегляди markimax 13 жовтня модуль [Поддержка] CART CACHE - кэшируем корзину (cart.php => getProducts) 1 2 3 Автор: kJlukOo, 24 серпня 2018 cart cache cache (і ще %d) Теги: cart cache cache корзина кеширование module 66 відповідей 9 004 перегляди AlektroNik 8 жовтня 2021 SmartCache розширена версія системи кешування із захистом від ефекту "собача купа" та іншими "смаколиками" Автор: Vladzimir, 29 липня 2021 cache boost 0 коментарів 7 495 переглядів Vladzimir 14 червня 2021 Модуль SmartCache розширена версія системи кешування із захистом від ефекту "собача купа" та іншими "смаколиками" [Поддержка] Автор: Vladzimir, 14 червня 2021 cache boost 23 відповіді 2 541 перегляд sh1sh1n 6 листопада Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Ограничение кэша магазина Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich
vikingshop Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Да я то понял, это шутка такая была... в конце же смайлик :) Вот вы ему это подробно и расписали за меня, а то он бред с умным видом не только тут несет... Надіслати Поділитися на інших сайтах More sharing options...
vikingshop Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 И кэш тут файловый, а не базы. К стати, CDN + отказ от кэша картинок возможно неплохой вариант. Расскажите, как работает CDN, можно ее использовать в качестве кэша? И как осуществляется загрузка картинок в CDN? Да вот принцеп один и тот же тока кеши разные как вы заметили таки... оставить то что часто используется... а то что не часто УДАЛИТЬ из КЕША ибо нех жрать место!!! Правильнее конечно же определить когда последний раз открывали эту картинку (заходили на страницу с ней) и если ее не открывали последние сутки то удалить ее... но это ГЕМОРОЙНО!!! Поэтому как я в начале и предложил берем то что старше суток и удаляем... что мы имеем в итоге... нам надо что-то заново создать при заходе на эту страницу... верно? Какова вероятность что тут же нам их придется создать (ВСЕ!)!? Тут все зависит от кол-ва посетителей на сайте... если у человека кеш на 20гб то берем 20.000.000кб делим на 20кб (средний размер) и получаем 1000.000 картинок... предположим у человека 10 картинок на товар... у него 100.000 товара в базе... Берем количество просмотров 10.000 человек, каждый получает по 10 картинок, т.е. за сутки его база должна отработать 1/10 всего... Делим 100.000/24/60 в минуту надо зафигарить 70 картинок, т.е. это чуть больше 1 картинки в секунду, это при том что запрос не попал в кеш... это нагрузка ниипаца просто :) на самом деле если у него есть 10к простмотров, то он скорее купит хостинг где есть хотябы 100гигов места :) Да я то не ошибся форумом, а вот вы не зная даже что такое cdn походу явно имеете ошибку... и ошибка это как в одном анекдоте :) Надіслати Поділитися на інших сайтах More sharing options...
sv2109 Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Не нужно забывать так же что далеко не все товары в магазине просматриваются равномерно. Всегда есть какие-то топовые модели или товары по акциям или товары на первых страницах в каталогах, которые просматриваются регулярно (думаю их будет процентов 20) и товары, не очень популярные или которых может вообще не быть на складе и которые просматриваются раз в несколько дней.. (а таких вполне может быть процентов 80) Правильнее конечно же определить когда последний раз открывали эту картинку (заходили на страницу с ней) и если ее не открывали последние сутки то удалить ее... но это ГЕМОРОЙНО!!! А это кстати вариант! Есть такая linux команда - touch, которая меняет время доступа к файлу. Так почему бы во время каждого обращения к файлу (или для файлов, старше несколько часов) не запускать эту команду? Так у нас все популярные файлы будут со свежими датами доступа и удаляться будут только не популярные. Надіслати Поділитися на інших сайтах More sharing options... sv2109 Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Тоже подумал про touch, но webserver может делать touch? Веб-сервер из /image/cahce выдает товары как статику, а то придется по запросу запускать php-скрипт, который будет делать сначала touch, а потом например кидать redirect-header. Хорошо ли это? ресайзинг картинок происходит через модель ModelToolImage, где есть такой код: class ModelToolImage extends Model { public function resize($filename, $width, $height) { if (!file_exists(DIR_IMAGE . $filename) || !is_file(DIR_IMAGE . $filename)) { return; } $info = pathinfo($filename); $extension = $info['extension']; $old_image = $filename; $new_image = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . $width . 'x' . $height . '.' . $extension; if (!file_exists(DIR_IMAGE . $new_image) || (filemtime(DIR_IMAGE . $old_image) > filemtime(DIR_IMAGE . $new_image))) { // создание нового рисунка } else { // тут добавляем touch } if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) { return HTTPS_IMAGE . $new_image; } else { return HTTP_IMAGE . $new_image; } } } Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Можно и touch, но не у всех линух сервера :) А при экспорте не оригинал нужен? Тут модуль же есть дык он вообще свое разрешение для яндекса делает... и заметьте там правильно указано что это дело лучше что бы работало под КРОНОМ!!! И потом опять товарищь toporchillo через кешь отдать даже сам список... а тут кешь уже не рулит т.к. его надо чистить... Не пытайтесь решить проблему всю целиком!!! Тогда тупо при экспорте товарищу МЕСТА НЕ ХВАТИТ НИКАК и все он попал!!! неужели это так трудно понять? Хотя да куда проще лепить что первое в голову придет... :) Даже при экспорте они нужны все, но как вы НЕ заметели НЕ СРАЗУ! Это то вы хоть понимаете, что даже яндекс за секунду все картинки не запросит или и тут будете спорить?! P.S. аплоад картинок не происходит, читайте про технологию cdn самостоятель, и про индексы/кеширование mysql... Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 15 грудня 2012 Автор Share Опубліковано: 15 грудня 2012 Кстати- насчёт убивания картинок из кеша по крону- интересная идея. Об остальном по- порядку: 1. С количеством товара угадали, чуть больше 70 тысяч. 2. Кэш забивает именно картинок, не mySQL. 3. Нагрузка на магазин пока никакая: и ста посещений в сутки нету (он ещё даже гуглом не проиндексирован). 4. Про хостинг пожирнее- тоже угадали, на этом нахожусь именно из-за дешевизны. считаю, кстати, что тут очень неплохо в плане быстродействия. 5. Когда имел в виду картинки грузить из другого места- предполагалось взять дома статический айпишник (или даже через no-ip.org) и картинки отдавать с домашнего веб-сервера. Пока от этой идеи окончательно не отказался. Но не знаю где чего подпилить в самом магазине. 6. Картинки размером 600х600, в магазине выдаются этого же размера. Но в кэш они всё-равно почему-то попадают. Думаю- написать программулину, которая тупо раз в час убивает из кэша все файлы старше одного часа. По ftp туда забираться, он умеет отдавать дату файла. Но не только по этому признаку, а ещё основываясь на просмотрах из самого магазина, чтобы не убить популярный. Думаю в mySQL базе будет отметка даты-времени последнего просмотра. Если не будет- можно раз в час сбрасывать счётчик просмотров. Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 15 грудня 2012 Share Опубліковано: 15 грудня 2012 (змінено) Есть одни вариант. Пример здесь http://avtokuzov.by/...id_category=63. (сейчас сайт переделан и ссылка уже не актуальна) Магазин правда сделан на Prestashop, а хостинг дешевый (200 р. в месяц) поэтому сам сайт тормозной. Но суть в том, что все картинки товара там на самом хосте отсутствуют. Там товары грузятся примерно раз в 2-3 дня с сайта-донора. Картинки тоже предоставляются как URL на сайте доноре. Так во на сайте получателе я доработал скрипт 404.php, который поднимается каждый раз, как не находится нужный файл (в нашем случае это файл картинки) и в котором собственно возвращается альтернативный URL( и это урл на сайте доноре), из которого и грузится контент в src в тэге img. Ну размеры соответственно задаются версткой. Единственный недостаток - замедление загрузки картинок если они сделаны в высоком разрешении и размеры файлов велики. Змінено 16 січня 2013 користувачем EVMedvedev Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 15 грудня 2012 Автор Share Опубліковано: 15 грудня 2012 Так во на сайте получателе я доработал скрипт 404.php, который поднимается каждый раз, как не находится нужный файл (в нашем случае это файл картинки) и в котором собственно возвращается альтернативный URL( и это урл на сайте доноре), из которого и грузится контент в src в тэге img. Ну размеры соответственно задаются версткой. Единственный недостаток - замедление загрузки картинок если они сделаны в высоком разрешении и размеры файлов велики. Это пять! :) Проблемку решил. У меня есть робот, который обслуживает мой магазин (в том числе общается в соцсетях). Вот он каждый час и чистит кэш. оставляет только 100 самых популярных товаров (берётся из таблицы products в поле view таким запросом: SELECT product_id FROM vanoid.product where viewed>0 order by viewed desc limit 100 ). Единственный возможный минус- может убить картинку, которую только что запрашивали, и запросили ещё раз сразу после чистки кэша. Ну- тогда просто в кэш оно запишется ещё раз. Пока буду тестировать. Ком нужно- вот код. Написано на Delphi. procedure TForm1.Cleancache1Click(Sender: TObject); var q:TADOQuery; SL:TStringList; procedure GoDir(dir:string); var i,ind:integer; List:TStringList; art:integer; begin if CloseAttempt then exit; if not IDFTP1.Connected then IDFTP1.Connect; IDFTP1.ChangeDir(dir); List:=TStringList.create; List.Clear; IDFTP1.List(List,'',false); List.Sort; for i:=0 to List.Count-1 do begin if pos('.',List[i])=0 then GoDir(dir+'/'+List[i]); if pos('.jpg',List[i])=length(List[i])-4+1 then begin art:=strtoint(Replace(Replace(dir,'/domains/тратата.ru/image/cache/data/img',''),'/','')); if not SL.Find(inttostr(art),ind) then begin AddLog('Deleting from cache: '+List[i]); IDFTP1.Delete(List[i]); end else begin AddLog(List[i]+' not deleted as top 100 popular'); end; end; end; List.Clear; IDFTP1.List(List,'',false); List.Sort; if list.Count=2 then begin IDFTP1.ChangeDir('..'); IDFTP1.RemoveDir(dir); end; List.Free; end; begin AddLog('Cleaning image cache'); q:=TADOquery.Create(nil); q.Connection:=MySqlConnection; q.SQL.Add('SELECT product_id FROM vanoid.product where viewed>0 order by viewed desc limit 100'); q.Open; SL:=TStringList.Create; while not q.Eof do begin SL.Add(q.Fields[0].asstring); q.Next; end; SL.Sort; q.free; GoDir('/domains/тратата.ru/image/cache/data/img'); SL.Free; AddLog('Cleaning image cache complete'); end; Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 15 грудня 2012 Share Опубліковано: 15 грудня 2012 Какой модуль? Этот? http://opencartforum...BA%D0%B5%D1%82/ :-) Мне тяжело понять, когда так мало запятых и много "!!!". Угу он самый... что у всех клиентов при обработке некислые тормоза на серваках как вы утверждаете выше или таки вы еще раз ошиблись тут? 2Vanoid при 100 человеках в сутки, думаю кеш можно и раз в неделю чистить и не морочится на mysql и на все прочее... К стате что бы touch запустить нужне же sheel-exeс или другой исполнитель... они обычно на виртуалах отключены дабы не плодить левую нагрузку... т.ч. остаются отметки в mysql или не париться на время последнего обращения вообще... Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 16 грудня 2012 Share Опубліковано: 16 грудня 2012 Ком нужно- вот код. Написано на Delphi. OMG!! совет: добавьте индекс для viewed Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 16 грудня 2012 Автор Share Опубліковано: 16 грудня 2012 2Vanoid при 100 человеках в сутки, думаю кеш можно и раз в неделю чистить и не морочится на mysql и на все прочее... Это пока. Очень надеюсь, что потом будет больше :) Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 16 грудня 2012 Автор Share Опубліковано: 16 грудня 2012 OMG!! совет: добавьте индекс для viewed Пока никаких тормозов не замечено. Информацию выводит мгновенно. Пока не столкнусь с проблемой- добавлять не буду :) А по поводу дельфи- отчего такие восклицания??? На хостинге нет ни крона, ни возможности чего бы то ни было ещё мудрить. Дешёвый хостинг :) Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 16 грудня 2012 Share Опубліковано: 16 грудня 2012 Добавьте, добавьте индекс это будет правильнее... по мере роста (изменения этого параметра) mysql может больше жрать CPU :) Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 20 грудня 2012 Автор Share Опубліковано: 20 грудня 2012 Ok, создал. "create index ix_viewed on product (viewed)". Пока никакой разницы не заметил :) Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Модуль Fast Cache PRO - Increase Performance + Scalability (Кэширование и улучшение производительности сайта) [Поддержка] Автор: kirians, 21 жовтня 2021 cache fast cache (і ще %d) Теги: cache fast cache кэш кэш cache кэширование кэш cache оптимизация кеш кешування 0 відповідей 646 переглядів kirians 3 листопада 2021 Модуль [Поддержка] 1 2 3 4 75 Автор: markimax, 15 березня 2017 cache seo cms (і ще %d) Теги: cache seo cms кеширование кеш страниц кеш контроллеров кеш моделей скорость jet cache оптимизация запросы тормозит pagespeed 1 852 відповіді 239 852 перегляди markimax 13 жовтня модуль [Поддержка] CART CACHE - кэшируем корзину (cart.php => getProducts) 1 2 3 Автор: kJlukOo, 24 серпня 2018 cart cache cache (і ще %d) Теги: cart cache cache корзина кеширование module 66 відповідей 9 004 перегляди AlektroNik 8 жовтня 2021 SmartCache розширена версія системи кешування із захистом від ефекту "собача купа" та іншими "смаколиками" Автор: Vladzimir, 29 липня 2021 cache boost 0 коментарів 7 495 переглядів Vladzimir 14 червня 2021 Модуль SmartCache розширена версія системи кешування із захистом від ефекту "собача купа" та іншими "смаколиками" [Поддержка] Автор: Vladzimir, 14 червня 2021 cache boost 23 відповіді 2 541 перегляд sh1sh1n 6 листопада Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Ограничение кэша магазина
sv2109 Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Тоже подумал про touch, но webserver может делать touch? Веб-сервер из /image/cahce выдает товары как статику, а то придется по запросу запускать php-скрипт, который будет делать сначала touch, а потом например кидать redirect-header. Хорошо ли это? ресайзинг картинок происходит через модель ModelToolImage, где есть такой код: class ModelToolImage extends Model { public function resize($filename, $width, $height) { if (!file_exists(DIR_IMAGE . $filename) || !is_file(DIR_IMAGE . $filename)) { return; } $info = pathinfo($filename); $extension = $info['extension']; $old_image = $filename; $new_image = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . $width . 'x' . $height . '.' . $extension; if (!file_exists(DIR_IMAGE . $new_image) || (filemtime(DIR_IMAGE . $old_image) > filemtime(DIR_IMAGE . $new_image))) { // создание нового рисунка } else { // тут добавляем touch } if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) { return HTTPS_IMAGE . $new_image; } else { return HTTP_IMAGE . $new_image; } } } Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Можно и touch, но не у всех линух сервера :) А при экспорте не оригинал нужен? Тут модуль же есть дык он вообще свое разрешение для яндекса делает... и заметьте там правильно указано что это дело лучше что бы работало под КРОНОМ!!! И потом опять товарищь toporchillo через кешь отдать даже сам список... а тут кешь уже не рулит т.к. его надо чистить... Не пытайтесь решить проблему всю целиком!!! Тогда тупо при экспорте товарищу МЕСТА НЕ ХВАТИТ НИКАК и все он попал!!! неужели это так трудно понять? Хотя да куда проще лепить что первое в голову придет... :) Даже при экспорте они нужны все, но как вы НЕ заметели НЕ СРАЗУ! Это то вы хоть понимаете, что даже яндекс за секунду все картинки не запросит или и тут будете спорить?! P.S. аплоад картинок не происходит, читайте про технологию cdn самостоятель, и про индексы/кеширование mysql... Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 15 грудня 2012 Автор Share Опубліковано: 15 грудня 2012 Кстати- насчёт убивания картинок из кеша по крону- интересная идея. Об остальном по- порядку: 1. С количеством товара угадали, чуть больше 70 тысяч. 2. Кэш забивает именно картинок, не mySQL. 3. Нагрузка на магазин пока никакая: и ста посещений в сутки нету (он ещё даже гуглом не проиндексирован). 4. Про хостинг пожирнее- тоже угадали, на этом нахожусь именно из-за дешевизны. считаю, кстати, что тут очень неплохо в плане быстродействия. 5. Когда имел в виду картинки грузить из другого места- предполагалось взять дома статический айпишник (или даже через no-ip.org) и картинки отдавать с домашнего веб-сервера. Пока от этой идеи окончательно не отказался. Но не знаю где чего подпилить в самом магазине. 6. Картинки размером 600х600, в магазине выдаются этого же размера. Но в кэш они всё-равно почему-то попадают. Думаю- написать программулину, которая тупо раз в час убивает из кэша все файлы старше одного часа. По ftp туда забираться, он умеет отдавать дату файла. Но не только по этому признаку, а ещё основываясь на просмотрах из самого магазина, чтобы не убить популярный. Думаю в mySQL базе будет отметка даты-времени последнего просмотра. Если не будет- можно раз в час сбрасывать счётчик просмотров. Надіслати Поділитися на інших сайтах More sharing options... EVMedvedev Опубліковано: 15 грудня 2012 Share Опубліковано: 15 грудня 2012 (змінено) Есть одни вариант. Пример здесь http://avtokuzov.by/...id_category=63. (сейчас сайт переделан и ссылка уже не актуальна) Магазин правда сделан на Prestashop, а хостинг дешевый (200 р. в месяц) поэтому сам сайт тормозной. Но суть в том, что все картинки товара там на самом хосте отсутствуют. Там товары грузятся примерно раз в 2-3 дня с сайта-донора. Картинки тоже предоставляются как URL на сайте доноре. Так во на сайте получателе я доработал скрипт 404.php, который поднимается каждый раз, как не находится нужный файл (в нашем случае это файл картинки) и в котором собственно возвращается альтернативный URL( и это урл на сайте доноре), из которого и грузится контент в src в тэге img. Ну размеры соответственно задаются версткой. Единственный недостаток - замедление загрузки картинок если они сделаны в высоком разрешении и размеры файлов велики. Змінено 16 січня 2013 користувачем EVMedvedev Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 15 грудня 2012 Автор Share Опубліковано: 15 грудня 2012 Так во на сайте получателе я доработал скрипт 404.php, который поднимается каждый раз, как не находится нужный файл (в нашем случае это файл картинки) и в котором собственно возвращается альтернативный URL( и это урл на сайте доноре), из которого и грузится контент в src в тэге img. Ну размеры соответственно задаются версткой. Единственный недостаток - замедление загрузки картинок если они сделаны в высоком разрешении и размеры файлов велики. Это пять! :) Проблемку решил. У меня есть робот, который обслуживает мой магазин (в том числе общается в соцсетях). Вот он каждый час и чистит кэш. оставляет только 100 самых популярных товаров (берётся из таблицы products в поле view таким запросом: SELECT product_id FROM vanoid.product where viewed>0 order by viewed desc limit 100 ). Единственный возможный минус- может убить картинку, которую только что запрашивали, и запросили ещё раз сразу после чистки кэша. Ну- тогда просто в кэш оно запишется ещё раз. Пока буду тестировать. Ком нужно- вот код. Написано на Delphi. procedure TForm1.Cleancache1Click(Sender: TObject); var q:TADOQuery; SL:TStringList; procedure GoDir(dir:string); var i,ind:integer; List:TStringList; art:integer; begin if CloseAttempt then exit; if not IDFTP1.Connected then IDFTP1.Connect; IDFTP1.ChangeDir(dir); List:=TStringList.create; List.Clear; IDFTP1.List(List,'',false); List.Sort; for i:=0 to List.Count-1 do begin if pos('.',List[i])=0 then GoDir(dir+'/'+List[i]); if pos('.jpg',List[i])=length(List[i])-4+1 then begin art:=strtoint(Replace(Replace(dir,'/domains/тратата.ru/image/cache/data/img',''),'/','')); if not SL.Find(inttostr(art),ind) then begin AddLog('Deleting from cache: '+List[i]); IDFTP1.Delete(List[i]); end else begin AddLog(List[i]+' not deleted as top 100 popular'); end; end; end; List.Clear; IDFTP1.List(List,'',false); List.Sort; if list.Count=2 then begin IDFTP1.ChangeDir('..'); IDFTP1.RemoveDir(dir); end; List.Free; end; begin AddLog('Cleaning image cache'); q:=TADOquery.Create(nil); q.Connection:=MySqlConnection; q.SQL.Add('SELECT product_id FROM vanoid.product where viewed>0 order by viewed desc limit 100'); q.Open; SL:=TStringList.Create; while not q.Eof do begin SL.Add(q.Fields[0].asstring); q.Next; end; SL.Sort; q.free; GoDir('/domains/тратата.ru/image/cache/data/img'); SL.Free; AddLog('Cleaning image cache complete'); end; Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 15 грудня 2012 Share Опубліковано: 15 грудня 2012 Какой модуль? Этот? http://opencartforum...BA%D0%B5%D1%82/ :-) Мне тяжело понять, когда так мало запятых и много "!!!". Угу он самый... что у всех клиентов при обработке некислые тормоза на серваках как вы утверждаете выше или таки вы еще раз ошиблись тут? 2Vanoid при 100 человеках в сутки, думаю кеш можно и раз в неделю чистить и не морочится на mysql и на все прочее... К стате что бы touch запустить нужне же sheel-exeс или другой исполнитель... они обычно на виртуалах отключены дабы не плодить левую нагрузку... т.ч. остаются отметки в mysql или не париться на время последнего обращения вообще... Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 16 грудня 2012 Share Опубліковано: 16 грудня 2012 Ком нужно- вот код. Написано на Delphi. OMG!! совет: добавьте индекс для viewed Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 16 грудня 2012 Автор Share Опубліковано: 16 грудня 2012 2Vanoid при 100 человеках в сутки, думаю кеш можно и раз в неделю чистить и не морочится на mysql и на все прочее... Это пока. Очень надеюсь, что потом будет больше :) Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 16 грудня 2012 Автор Share Опубліковано: 16 грудня 2012 OMG!! совет: добавьте индекс для viewed Пока никаких тормозов не замечено. Информацию выводит мгновенно. Пока не столкнусь с проблемой- добавлять не буду :) А по поводу дельфи- отчего такие восклицания??? На хостинге нет ни крона, ни возможности чего бы то ни было ещё мудрить. Дешёвый хостинг :) Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 16 грудня 2012 Share Опубліковано: 16 грудня 2012 Добавьте, добавьте индекс это будет правильнее... по мере роста (изменения этого параметра) mysql может больше жрать CPU :) Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 20 грудня 2012 Автор Share Опубліковано: 20 грудня 2012 Ok, создал. "create index ix_viewed on product (viewed)". Пока никакой разницы не заметил :) Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Модуль Fast Cache PRO - Increase Performance + Scalability (Кэширование и улучшение производительности сайта) [Поддержка] Автор: kirians, 21 жовтня 2021 cache fast cache (і ще %d) Теги: cache fast cache кэш кэш cache кэширование кэш cache оптимизация кеш кешування 0 відповідей 646 переглядів kirians 3 листопада 2021 Модуль [Поддержка] 1 2 3 4 75 Автор: markimax, 15 березня 2017 cache seo cms (і ще %d) Теги: cache seo cms кеширование кеш страниц кеш контроллеров кеш моделей скорость jet cache оптимизация запросы тормозит pagespeed 1 852 відповіді 239 852 перегляди markimax 13 жовтня модуль [Поддержка] CART CACHE - кэшируем корзину (cart.php => getProducts) 1 2 3 Автор: kJlukOo, 24 серпня 2018 cart cache cache (і ще %d) Теги: cart cache cache корзина кеширование module 66 відповідей 9 004 перегляди AlektroNik 8 жовтня 2021 SmartCache розширена версія системи кешування із захистом від ефекту "собача купа" та іншими "смаколиками" Автор: Vladzimir, 29 липня 2021 cache boost 0 коментарів 7 495 переглядів Vladzimir 14 червня 2021 Модуль SmartCache розширена версія системи кешування із захистом від ефекту "собача купа" та іншими "смаколиками" [Поддержка] Автор: Vladzimir, 14 червня 2021 cache boost 23 відповіді 2 541 перегляд sh1sh1n 6 листопада Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
vikingshop Опубліковано: 14 грудня 2012 Share Опубліковано: 14 грудня 2012 Можно и touch, но не у всех линух сервера :) А при экспорте не оригинал нужен? Тут модуль же есть дык он вообще свое разрешение для яндекса делает... и заметьте там правильно указано что это дело лучше что бы работало под КРОНОМ!!! И потом опять товарищь toporchillo через кешь отдать даже сам список... а тут кешь уже не рулит т.к. его надо чистить... Не пытайтесь решить проблему всю целиком!!! Тогда тупо при экспорте товарищу МЕСТА НЕ ХВАТИТ НИКАК и все он попал!!! неужели это так трудно понять? Хотя да куда проще лепить что первое в голову придет... :) Даже при экспорте они нужны все, но как вы НЕ заметели НЕ СРАЗУ! Это то вы хоть понимаете, что даже яндекс за секунду все картинки не запросит или и тут будете спорить?! P.S. аплоад картинок не происходит, читайте про технологию cdn самостоятель, и про индексы/кеширование mysql... Надіслати Поділитися на інших сайтах More sharing options...
Vanoid Опубліковано: 15 грудня 2012 Автор Share Опубліковано: 15 грудня 2012 Кстати- насчёт убивания картинок из кеша по крону- интересная идея. Об остальном по- порядку: 1. С количеством товара угадали, чуть больше 70 тысяч. 2. Кэш забивает именно картинок, не mySQL. 3. Нагрузка на магазин пока никакая: и ста посещений в сутки нету (он ещё даже гуглом не проиндексирован). 4. Про хостинг пожирнее- тоже угадали, на этом нахожусь именно из-за дешевизны. считаю, кстати, что тут очень неплохо в плане быстродействия. 5. Когда имел в виду картинки грузить из другого места- предполагалось взять дома статический айпишник (или даже через no-ip.org) и картинки отдавать с домашнего веб-сервера. Пока от этой идеи окончательно не отказался. Но не знаю где чего подпилить в самом магазине. 6. Картинки размером 600х600, в магазине выдаются этого же размера. Но в кэш они всё-равно почему-то попадают. Думаю- написать программулину, которая тупо раз в час убивает из кэша все файлы старше одного часа. По ftp туда забираться, он умеет отдавать дату файла. Но не только по этому признаку, а ещё основываясь на просмотрах из самого магазина, чтобы не убить популярный. Думаю в mySQL базе будет отметка даты-времени последнего просмотра. Если не будет- можно раз в час сбрасывать счётчик просмотров. Надіслати Поділитися на інших сайтах More sharing options...
EVMedvedev Опубліковано: 15 грудня 2012 Share Опубліковано: 15 грудня 2012 (змінено) Есть одни вариант. Пример здесь http://avtokuzov.by/...id_category=63. (сейчас сайт переделан и ссылка уже не актуальна) Магазин правда сделан на Prestashop, а хостинг дешевый (200 р. в месяц) поэтому сам сайт тормозной. Но суть в том, что все картинки товара там на самом хосте отсутствуют. Там товары грузятся примерно раз в 2-3 дня с сайта-донора. Картинки тоже предоставляются как URL на сайте доноре. Так во на сайте получателе я доработал скрипт 404.php, который поднимается каждый раз, как не находится нужный файл (в нашем случае это файл картинки) и в котором собственно возвращается альтернативный URL( и это урл на сайте доноре), из которого и грузится контент в src в тэге img. Ну размеры соответственно задаются версткой. Единственный недостаток - замедление загрузки картинок если они сделаны в высоком разрешении и размеры файлов велики. Змінено 16 січня 2013 користувачем EVMedvedev Надіслати Поділитися на інших сайтах More sharing options...
Vanoid Опубліковано: 15 грудня 2012 Автор Share Опубліковано: 15 грудня 2012 Так во на сайте получателе я доработал скрипт 404.php, который поднимается каждый раз, как не находится нужный файл (в нашем случае это файл картинки) и в котором собственно возвращается альтернативный URL( и это урл на сайте доноре), из которого и грузится контент в src в тэге img. Ну размеры соответственно задаются версткой. Единственный недостаток - замедление загрузки картинок если они сделаны в высоком разрешении и размеры файлов велики. Это пять! :) Проблемку решил. У меня есть робот, который обслуживает мой магазин (в том числе общается в соцсетях). Вот он каждый час и чистит кэш. оставляет только 100 самых популярных товаров (берётся из таблицы products в поле view таким запросом: SELECT product_id FROM vanoid.product where viewed>0 order by viewed desc limit 100 ). Единственный возможный минус- может убить картинку, которую только что запрашивали, и запросили ещё раз сразу после чистки кэша. Ну- тогда просто в кэш оно запишется ещё раз. Пока буду тестировать. Ком нужно- вот код. Написано на Delphi. procedure TForm1.Cleancache1Click(Sender: TObject); var q:TADOQuery; SL:TStringList; procedure GoDir(dir:string); var i,ind:integer; List:TStringList; art:integer; begin if CloseAttempt then exit; if not IDFTP1.Connected then IDFTP1.Connect; IDFTP1.ChangeDir(dir); List:=TStringList.create; List.Clear; IDFTP1.List(List,'',false); List.Sort; for i:=0 to List.Count-1 do begin if pos('.',List[i])=0 then GoDir(dir+'/'+List[i]); if pos('.jpg',List[i])=length(List[i])-4+1 then begin art:=strtoint(Replace(Replace(dir,'/domains/тратата.ru/image/cache/data/img',''),'/','')); if not SL.Find(inttostr(art),ind) then begin AddLog('Deleting from cache: '+List[i]); IDFTP1.Delete(List[i]); end else begin AddLog(List[i]+' not deleted as top 100 popular'); end; end; end; List.Clear; IDFTP1.List(List,'',false); List.Sort; if list.Count=2 then begin IDFTP1.ChangeDir('..'); IDFTP1.RemoveDir(dir); end; List.Free; end; begin AddLog('Cleaning image cache'); q:=TADOquery.Create(nil); q.Connection:=MySqlConnection; q.SQL.Add('SELECT product_id FROM vanoid.product where viewed>0 order by viewed desc limit 100'); q.Open; SL:=TStringList.Create; while not q.Eof do begin SL.Add(q.Fields[0].asstring); q.Next; end; SL.Sort; q.free; GoDir('/domains/тратата.ru/image/cache/data/img'); SL.Free; AddLog('Cleaning image cache complete'); end; Надіслати Поділитися на інших сайтах More sharing options...
vikingshop Опубліковано: 15 грудня 2012 Share Опубліковано: 15 грудня 2012 Какой модуль? Этот? http://opencartforum...BA%D0%B5%D1%82/ :-) Мне тяжело понять, когда так мало запятых и много "!!!". Угу он самый... что у всех клиентов при обработке некислые тормоза на серваках как вы утверждаете выше или таки вы еще раз ошиблись тут? 2Vanoid при 100 человеках в сутки, думаю кеш можно и раз в неделю чистить и не морочится на mysql и на все прочее... К стате что бы touch запустить нужне же sheel-exeс или другой исполнитель... они обычно на виртуалах отключены дабы не плодить левую нагрузку... т.ч. остаются отметки в mysql или не париться на время последнего обращения вообще... Надіслати Поділитися на інших сайтах More sharing options...
freelancer Опубліковано: 16 грудня 2012 Share Опубліковано: 16 грудня 2012 Ком нужно- вот код. Написано на Delphi. OMG!! совет: добавьте индекс для viewed Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 16 грудня 2012 Автор Share Опубліковано: 16 грудня 2012 2Vanoid при 100 человеках в сутки, думаю кеш можно и раз в неделю чистить и не морочится на mysql и на все прочее... Это пока. Очень надеюсь, что потом будет больше :) Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 16 грудня 2012 Автор Share Опубліковано: 16 грудня 2012 OMG!! совет: добавьте индекс для viewed Пока никаких тормозов не замечено. Информацию выводит мгновенно. Пока не столкнусь с проблемой- добавлять не буду :) А по поводу дельфи- отчего такие восклицания??? На хостинге нет ни крона, ни возможности чего бы то ни было ещё мудрить. Дешёвый хостинг :) Надіслати Поділитися на інших сайтах More sharing options... vikingshop Опубліковано: 16 грудня 2012 Share Опубліковано: 16 грудня 2012 Добавьте, добавьте индекс это будет правильнее... по мере роста (изменения этого параметра) mysql может больше жрать CPU :) Надіслати Поділитися на інших сайтах More sharing options... Vanoid Опубліковано: 20 грудня 2012 Автор Share Опубліковано: 20 грудня 2012 Ok, создал. "create index ix_viewed on product (viewed)". Пока никакой разницы не заметил :) Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
Vanoid Опубліковано: 16 грудня 2012 Автор Share Опубліковано: 16 грудня 2012 2Vanoid при 100 человеках в сутки, думаю кеш можно и раз в неделю чистить и не морочится на mysql и на все прочее... Это пока. Очень надеюсь, что потом будет больше :) Надіслати Поділитися на інших сайтах More sharing options...
Vanoid Опубліковано: 16 грудня 2012 Автор Share Опубліковано: 16 грудня 2012 OMG!! совет: добавьте индекс для viewed Пока никаких тормозов не замечено. Информацию выводит мгновенно. Пока не столкнусь с проблемой- добавлять не буду :) А по поводу дельфи- отчего такие восклицания??? На хостинге нет ни крона, ни возможности чего бы то ни было ещё мудрить. Дешёвый хостинг :) Надіслати Поділитися на інших сайтах More sharing options...
vikingshop Опубліковано: 16 грудня 2012 Share Опубліковано: 16 грудня 2012 Добавьте, добавьте индекс это будет правильнее... по мере роста (изменения этого параметра) mysql может больше жрать CPU :) Надіслати Поділитися на інших сайтах More sharing options...
Vanoid Опубліковано: 20 грудня 2012 Автор Share Опубліковано: 20 грудня 2012 Ok, создал. "create index ix_viewed on product (viewed)". Пока никакой разницы не заметил :) Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts