Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

kJlukOo

Користувачі
  • Публікації

    1 705
  • З нами

  • Відвідування

Коментарі блогу, опубліковані користувачем kJlukOo

  1. хочу добавить, что окфильтр очень аккуратно внедряется в запрос к бд getProducts. если есть модификаторы которые меняют этот запрос, то их работа сохраняется без всяких манипуляций 

    виер отказывается от штатного запроса и лепит свой, а это значит что все модификации штатного запроса идут в топку

    возможность кастомизации виер предусмотрел, но это дополнительная работа

  2. 9 часов назад, Yoda сказал:

    Для того чтобы получить детект устройства, достаточно до инициализции registry получить is_mobile условный, и потом его присвоить в виде  атрибута в registry, и все. Не просто так на много килобайт кода есть mobile_detect.

     

    хватит использовать мой код на своих проектах или плати мне бабло.

    • +1 2
  3. 19 часов назад, Shureg сказал:

    Ни о чём контент, вода. 

    сто плюсов. контент - вода. к сожалению как обычно ноль импакта :((

     

    • +1 3
  4. 1 час назад, Yoda сказал:

    Кто то тут крепко свистит, да еще и предлагает какую то дичайшую несовместимую дичь, которая приведет к конфликтам со всем!

    во тут реально конструктивно было. конфликты будут с микроволной печью в первую очередь. затестил цифры с sql_no_cache и разрыв в первом байте стал еще вкуснее на каких-то 5-10мс

     

    Отображение строк 0 - 49 (50 всего, Запрос занял 0.0276 сек.)
    SELECT SQL_NO_CACHE p.image, p.price, p.quantity, pd.name , (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, p.product_id FROM oc_product_to_category p2c LEFT JOIN oc_product p ON (p2c.product_id = p.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND p2c.category_id = '118' GROUP BY p.product_id ORDER BY (p.quantity>0) DESC,p.sort_order ASC, LCASE(pd.name) ASC LIMIT 0,50


         

    Отображение строк 0 - 49 (50 всего, Запрос занял 0.0200 сек.)
    SELECT SQL_NO_CACHE p.product_id, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, p.product_id FROM oc_product_to_category p2c LEFT JOIN oc_product p ON (p2c.product_id = p.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND p2c.category_id = '118' GROUP BY p.product_id ORDER BY (p.quantity>0) DESC,p.sort_order ASC, LCASE(pd.name) ASC LIMIT 0,50

     

    как полагаешь разница в 0.0076 секунды сможет компенсировать 50 таких запросов(ниже)?

    Отображение строк 0 - 0 (1 всего, Запрос занял 0.0016 сек.)
    SELECT SQL_NO_CACHE DISTINCT *, pd.name AS name, p.image, (SELECT md.name FROM oc_manufacturer_description md WHERE md.manufacturer_id = p.manufacturer_id AND md.language_id = '1') AS manufacturer, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM oc_product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '1') AS reward, (SELECT ss.name FROM oc_stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '1') AS stock_status, (SELECT wcd.unit FROM oc_weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '1') AS weight_class, (SELECT lcd.unit FROM oc_length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '1') AS length_class, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM oc_review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '2510842' AND pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0'

     

    зачем тебе explain? смешной. условия запроса никак не менялись. экплейн идентичен для двух этих запросов, я думал это само собой понятно... но не тебе :grin:

     

     

     

    не убирать дискаунт, чтобы добиться хорошей совместимости будет максимально логично, но мне интересно сделать легче и быстрее

  5. 28 минут назад, spectre сказал:

    а как к этому отнесутся фильтры? 

     

    мне кажется подобные модели трогать категорически запрещено не модами 

     

    я бы сделал чтоб getProduct и getProducts принимали параметры типа не считать скидку, не считать рейтинг и тп

    дримфильтр на такой кастомизации работает исправно. окфильтр надо будет потестить

    про то, что надо делать модом согласен

     

     

  6. ничего нового, но все конкретно по делу. хорошая компиляция советов

     

     

    Цитата

    12. Вывод и скрытие контента в зависимости от типа устройства. Используйте с умом. Пользуйтесь не js библиотеками а mobiledetect, от того что вы спрячете в display none какой либо элемент, он все равно будет опубликован в DOM страницы, если что-то хотите убрать для мобильных устройств, просто не выводите этот контент фактически при генерации html кода!

    по поводу этого хочу добавить немного конкретики. еще лучше убрать это из контроллера, что положительно скажется на ttfb

    есть либа system/helper/general. туда можно положить функцию детекшена мобилки. что-то вроде

     

     

    function isMobile() {
        return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]);
    }

    типичная задача не выводить левую колонку на мобике. есть строки, в контроллере, которые рендерят левую колонку 

    $data['column_left'] = isMobile() ? "" : $this->load->controller('common/column_left');

    еще есть одна тонкость. такой isMobile будет каждый раз проверять одно и тоже при многократном вызове. его тоже НУЖНО оптимизировать. кешировать результат в пределах одного запроса. например членом класса, как это реализован в либе корзины

     

    кстати, лейзи на чистом джс это прошлый век. нынче атрибут лодинг поддерживается всеми браузерами для изображений 

    https://developer.mozilla.org/ru/docs/Web/HTML/Element/img#attr-loading

  7. 9 часов назад, Yoda сказал:

    Хейтер-аутист подьехал.
    Жаль что кроме этого кривляния и блеяния, больше сказать нечего.

    так все таки типа редхет или типа почти+как-бы enterprise, ты определился?

  8. йода просит аругментировать комменты, при этом имею свои аргументы: это все таки почти RedHat, а это типа enterprise

    эта пачти типа этааа аааа ну типа да

     

     

     

    • +1 1
  9. да, кешеры такое себе. надо делать легкий дом, сжатые картники, злое время до первого байта и минимум лишних скриптов. ну и еще мускулу выделить памяти, да адекватными индексами покормить. йода, поведай лучше о тонкостях, а не о том что кешеры - такое себе


×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.