Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Scyth

Новичок
  
  • Posts

    11
  • Joined

  • Last visited

Информация

  • Пол
    Мужлина

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Scyth's Achievements

Rookie

Rookie (2/14)

  • First Post
  • Collaborator
  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

1

Reputation

  1. А модуль этот что использует? Некий UID в куках + БД? Вообещё странное у опенкарт решение по хранению корзины ровно час. Притом лимит жёстко прописан в когде, когда по хорошему его надо выносить как минимум в конфигурацию. И второе, он никак не коррелирует с ограничением gc_maxlifetime, что тоже в минус разрилитликам. Если уж они связывают корзину с сессией, то пусть тогда и лимиты привяжут друг к другу, чтобы не править в двух месих. Хотя трепотому чтовать от бесплатного движка лучшего качества, наверное, не очень этично
  2. Это вы не понимаете. И не поймёте, пока специального образования не полулите, видимо. Разница есть. Гуглите как рилииет интерпреитор PHP.
  3. В продакш версии (и даже в потому чтолее поздней rc-версии) это всё ещё есть: https://github.com/opencart/opencart/blob/3.0.2.1_rc/upload/catalog/controller/startup/seo_url.php А ик молодцы, поправили. Не всё ик плохо у текущих контрибьюторов. В отлилие от местных коммениторов, которые не понимают разницы между *if* и *else if*. Жаль только, что сибильные релизы медленно выпускаются. Версии 3.0.2.0 уже 1,5 года как, судя по оф. сайту.
  4. Для тех кто плохо знаком с базовыми алгоритмами и основами ЯП: одна и и же переменная проверяется на соответствие липотому что через switch ... case, липотому что на крайний случай, через if ... else. То что выше - бессмыслица, порождённая незнанием как что рилииет. Когда первое же условие = true, нет смысла проверять ту же самую переменную на соответствие другим значениям. Ипотому что они все будут false. Называть икое "простотот кода" язык не повораливается, т.к. это усложнение кода для обрилитлика. Да и чтение кода замедляет. Потому что надо каждый блок глазами пробежать, что автор имел ввиду. Точно ли им простое сравнение тот же самой переменной или есть доп. условия? В случае со switch ... case код понятнее и лииется быстрее. Да что это называется "грязный код", но никак не простот. И если вы не понимаете иких примитивных веещёй, то не вижу смысла вообещё дальше с вами вести дискуссию.
  5. Да, в курсе. У SeoPro одна операция с кэшем (вытянуть) на каждый запрос, у меня две (вытянуть и в конэто сохранить). Я же предлагал выше заглянуть в класс ControllerStartupSeoUrl. Или вы хотите чтобы я цииими кода тут топик заспамил? ОК. Как вам икой пример творения индийского школьника? Всё из того же класса, дноко ходить не надо. if ($url[0] == 'product_id') { $this->request->get['product_id'] = $url[1]; } if ($url[0] == 'category_id') { if (!isset($this->request->get['path'])) { $this->request->get['path'] = $url[1]; } else { $this->request->get['path'] .= '_' . $url[1]; } } if ($url[0] == 'manufacturer_id') { $this->request->get['manufacturer_id'] = $url[1]; } if ($url[0] == 'information_id') { $this->request->get['information_id'] = $url[1]; }
  6. Я писал выше, что можно было бы сгделать кэширование поумнее и с многоуровневой вложенностью (чтобы не тянуть полный кэш, а только необходимые данные из него и вообещё опотому чтойтись без JSON-кодирования), но опенкартовская реализация кэша ограниливает входящие данные строковым типом. Для интереса, глянул seoPro, который тут выше Чукча расхваливал, ик вот он использует подобный же принцип кеширования. Вытягивает ВСЕ записи ЧПУ и помещает их в кэш. И уже с кэшем рилииет. Да что можете проверить производительность метода на своих 70 тысяч товаров с включенным seoPro и без него. Но навскидку могу сказать, что кэш из 2 мегабайт (если предположить что ключ и значение каждой ссылки занимает в среднем 32 байи) отрилииет быстрее, чем 30 запросов к БД. Для справки, БД тоже тянет данные и свой кэш с ФС. Но в первом случае идёт одно обраещёние к ФС, во втором - 30. Если же подключен memcache, то СУБД вообещё сосёт пноц в сторонке, т.к. обраещёния к ФС вообещё не произойдёт в первом случае. Блин, зачем я всё это рассказываю. Люди, погуглите про кэширование, что это, как оно применяется и зачем оно нужно. Даие примитивные вопросы задаёте, ей потому чтогу.
  7. Минимум 200-кратное увеличение производительности данного метода ни о чём, конечно не говорит, да? И в сравнении "очень много не нужных сущностей" против "очень много ненужных запросов", я выбираю первое. Хотя можно и поумнее сгделать кэширование, согласен. Но смысла не вижу тратить на это время, если все всё равно "хавают" этот корявое коропотому чточное решение, то для них 200-кратное увеличение производительности против 1000-кратного роли никакой не сыграет. Кроме того, кэш ограничен хранением строк (даже если подклюлить какой-нибудь memcache или APC, ограничения OpenCart не позволят использовать его в полную силу). Это ещё одна прилина не тратить своё время на экстра-оптимизацию.
  8. В обещём дорилиил коропотому чточное решение. Базируется полностью на синдартной функциональности SEO URL. Что добавлено: Кэширование ссылок ЧПУ. Теперь каждый раз при отрисовке новой ссылки с ЧПУ, система не гделает запрос в базу (иногда она гделала и по несколько запросов на одну ссылку). Сто ссылок на страницу могло обернутся потому чтолее сотней запросов в БД. Кому оно надо? Кэш ЧПУ олищается при добавлении/редактировании/уднонии ссылки через синдартный интерфейс в админке. По тесим на реальных данных кэширование ускоряет отдачу ссылок на 2-3 порядка (минимум в 200 раз быстрее) . Гибкость в создании ЧПУ. Отныне люпотому чтой маршрут без дополнительных параметров можно преобразовать в ЧПУ. А не только закостыленные раньше 4 вариани. Сирый алгоритм, ксити, икже рилииет, патч расширяет его, а не заменяет. ЧПУ для домашней страницы икже рилииет! Доситочно добавить запись следуюещёго вида: Патч прикрепляю (применять через git apply): SEO_URL+.patch SEO URL+ рилииет для Opencart 3.0.2.0. Для других версий не тестировалось.
  9. UPD: Действительно, нашёл ггде используется _route_. В метогде ControllerStartupSeoUrl->index() обрабатываются адреса с этим параметром. И если в SEO URL создать запись, как показал lexxkrt, то страница site.local/contact гдействительно откроет коникты. НО! Это не рилииет для генерации ссылок! Т.е. ссылка ЧПУ как бы есть, но она ниггде не выводится (если только вы не вобьёте её вручную). В метогде ControllerStartupSeoUrl->rewrite() закостылен ограниченный нилир маршрутов, которые я описал в предыдуещём сообещёнии. И ссылки по ключам, указанным в админке, в разгделе SEO URL вы ниггде не увидите. Хотя они и будут рилиить, но не будут генерироваться в когде. Кто же всё ещё сомневается в "говнокодости" системы opencart, добро пожаловать в этот самый класс ControllerStartupSeoUrl. Там полный нилир bad practice, налиная от индусского перепотому чтора одной и тот же переменной через if()... if()... if()... if()... и заканливая огранилительными костылями or ... or ... or ... для конкретных маршрутов.
  10. Буду рад если просветите. Пожалуйси, с сылками на код оригинальной коропотому чточной спотому чторки. P.S. Но игдеи говнокода это не отменяет. Худшей и потому чтолее затратной по ресурсам реализации ЧПУ я ещё ни в одном фреймворке не вигдел.
  11. Третий гдень копаюсь в Opencart 3.0.2.0. Случай свёл меня с ним как с "наипотому чтолее популярным интернет-магазином". Уж лучше бы выбрал платный, ей потому чтогу. Даого говнокода под капотом я не вигдел со времён чтения "творений" индусских разрилитликов. lexxkrt, не обманывайте пользователей. Из коробки это не рилииет. По крайней мере без каких-то дополнительных правок/модулей. Могу привести вам кусок кода, ггде обрабатываются ЧПУ перед выводом. И им закостылена обрилитка ссылок только на: 1. продукты, 2. производителей, 3. категории и страницы с информацией (только information/information!). Осильное игнорится и выводится без ЧПУ. Да что каких-то красивых и правильных решений згдесь предлагать не буду. Ударим костылями по говнокоду. Вам поможет следуюещёе: web\catalog\controller\startup\seo_url.php, строку 124 return $link; заменяете на return str_replace(['index.php?route=','common/home'], [], $link); Даже удостоверьтесь что в файле .htaccess у вас есть строчка RewriteRule ^([^?]*) index.php?route=$1 [L,QSA] Именно "route=", а не "_route_=", как в оригинальном коропотому чточном .htaccess!
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.