Чем традиционный роутинг + автолоадер не хорош?
Другое дело, что любой документ, на мой взгляд, должен уметь быть гибким.
А уж там
Но, может, готовый объект из носкуэл будет лучшим выходом, пардон, сntrl-c cntrl-v
{'_id': '_54afaf995bd', 'colltype': '1C', 'content_component': {'STKN': 'iDYPOUvy', 'content': {'after_content': '*string**', 'anonse': '*string**', 'article': '*string**', 'aside_bottom': '*string**', 'aside_top': '*string**', 'before_content': '*string**'}, 'css_list': '/assets/themes/default/css/custom.min.css,/assets/css/usr.min.css,/assets/vendor/tiny-edit/src/tinyeditor.min.css', 'files': False, 'images': [{'_id': 'filea535f29d', 'alt': '', 'lg': '/files/catalog-zap/d/dv/dvigatel-1_1200x800.jpg', 'md': '/files/catalog-zap/d/dv/dvigatel-1_900x600.jpg', 'orig': '/files/catalog-zap/d/dv/dvigatel-1.jpg', 'size': '1660x1107', 'sm': '/files/catalog-zap/d/dv/dvigatel-1_600x400.jpg', 'title': '', 'xs': '/files/catalog-zap/d/dv/dvigatel-1_300x200.jpg'}, {'_id': 'filee295884d', 'alt': '', 'lg': '/files/catalog-zap/d/dv/dvigatel-2_1200x800.jpg', 'md': '/files/catalog-zap/d/dv/dvigatel-2_900x600.jpg', 'orig': '/files/catalog-zap/d/dv/dvigatel-2.jpg', 'size': '1660x1107', 'sm': '/files/catalog-zap/d/dv/dvigatel-2_600x400.jpg', 'title': '', 'xs': '/files/catalog-zap/d/dv/dvigatel-2_300x200.jpg'}], 'meta': {'og:title': ''}, 'through_blocks': {'analog': '*array**', 'applicability': '*array**', 'hits': '*array**', 'related': '*array**'}}, 'fullslug': 'zapchasti/dvigatel', 'icon': '/files/catalog-zap/e/en/engine.png', 'id1C': '54a892d2-fd1d-11de-8040-001302dcc72f', 'name': 'двигатель', 'owner': ['admin:root', 'usr:1C', 'usr:manager'], 'parent': '_54a5ff1fed1', 'slug': 'dvigatel', 'sub': 'www', 'templates': {'card': 'zap/dvigatel.twig', 'document': 'site/default.twig', 'item_descr': '', 'item_title': 'Купить %item_name% в %city[datv]% - запчасти на ' '%group_name% в %shop_name%', 'listing': 'zap/default.twig', 'pagination': 50}, 'upd': 1567240577, 'user_actions': {'form_fill': 'storage_add_cur_act', 'order': 'storage_add_cur_act', 'send_order': 'storage_complette_order,storage_clear_act_list'}, 'ya_goal': {'btn_message': 'soobshen', 'btn_order': 'perehog_oforml', 'cnt_change': 'kolvo'} # еще много букв и не одной картинки:( }
используя 'document': 'site/default.twig' из кнтрл-в объекта выше
<progress max="100" value="0"></progress> <script data-sid="{{ STKN }}">const cssList='{{ css_list }}';/*sys_js*/(function(){aapp.STKN="{{ STKN }}";})();</script> <script defer src="/assets/js/before.min.js"></script> {% for lib in jslib %} {% if lib %} <script defer src="{{ lib }}"></script> {% endif %} {% endfor %} </body></html>
чтобы в итоге получилось
<progress max="100" value="0"></progress> <script data-sid="iDYPOUvy">const cssList='/assets/themes .... многобукв из-за /*sys_js*/
Тут, возможно, ребенку объяснить придется. Мой, в этом месте, спросил - это тот, который все громит?😂
Без разницы какой сайт. Все три - это разные инструменты, pingdom.com и gtmetrix.com - не сильно больше Ф12-сеть-тайминги, но покатит. Советы? А вебмастер не знает, что картинки ас-ис? Кроме gd или Imagick, что там у вас картинками занимается, никто их не трогал. Гугла исполняет все и свои советы дает, типа этот цсс не юзается в хтмл документе - в топку. И там не про время загрузки☝
А в целом, хозяин-барин
Показывает, в том числе, что разработчик сайта siteask запендюрил загрузку style.min.css в head, не все правила из которого используются на странице.
Кто кому даст? Если вам гугл даст 1.000.000, то юзеры загрузят лишних 109Мб только от одного первого правила в этом цсс.
В целом метрики - посчитать, они есть у каждого в браузере по Ф12. А метрики, что ты грузанул, пока этого не надо, только у гугла.
Google PageSpeed Insights — не пузомерка, а хороший инструмент.
https://siteask.ru/wp-includes/css/dist/block-library/style.min.css
.wp-block-audio figcaption{margin-top:.5em;margin-bottom:1em;color:#555d66;text-align:center;font-size:13px}
Загляните в хтмл-код https://siteask.ru/keys.html и поищите что то с классом wp-block-audio
Если, это потом js добавит, то все равно, хрень этот ваш style.min.css
Добавлю
Без шума в виде номера. Т.е. запрос "колец поршневых"
Без колец == кольц
если так
SELECT rowid, highlight(s, 0, "(*", "*)") as sku, highlight(s, 1, "[!", "!]") as name, price FROM s WHERE s MATCH 'колец поршн*' ORDER BY bm25(s);
5115 И801.08.000 Метизы, рем. к-ты, подшипники: Приспособление для снятия и установки [!поршневых!] [!колец!] БИМЕТ 5140.0
SELECT rowid, highlight(s, 0, "(*", "*)") as sku, highlight(s, 1, "[!", "!]") as name, price FROM s WHERE s MATCH 'колец OR поршн*' ORDER BY bm25(s);
то -- Result: 1877 rows returned in 28ms
И801.08.000 Метизы, рем. к-ты, подшипники: Приспособление для снятия и установки [!поршневых!] [!колец!] БИМЕТ 5140.0 30-404 Метизы, рем. к-ты, подшипники: Набор [!колец!] для ремонта РТИ (желтый) 502.0 30-382 Метизы, рем. к-ты, подшипники: Набор [!колец!] для ремонта РТИ (красный) 502.0 30-386 Метизы, рем. к-ты, подшипники: Набор [!колец!] для ремонта РТИ (синий) 502.0 5320-3506000У Тормоза: Р/к (ремкомплект) [!колец!] трубопроводов тормозов 5 наим. 209 дет. КАМРТИ 520.0 3902286 Двигатель: Кольцо [!поршневое!] «Cummins» 138.0
С колец == кольц
SELECT rowid, highlight(s, 0, "(*", "*)") as sku, highlight(s, 1, "[!", "!]") as name, price FROM s WHERE s MATCH 'колец поршн* OR кольц* поршн*' ORDER BY bm25(s);
2445 740-1000106 Двигатель: [!Кольца!] [!поршневые!] (Кострома) 2446 740.30-1000106 Двигатель: [!Кольца!] [!поршневые!] ЕВРО-1, 2 Кострома 2447 740-1000106-01 Двигатель: [!Кольца!] [!поршневые!] ОАО «КамАЗ» 2448 740-1000106 Двигатель: [!Кольца!] [!поршневые!] ч/б
А всего то дали понять, что колец == кольц ---------- Добавлено 19.10.2019 в 02:01 ---------- И так, на всякий
-- At line 1: SELECT rowid, highlight(s, 0, "(*", "*)") as sku, highlight(s, 1, "[!", "!]") as name, price FROM s WHERE s MATCH 'колец OR поршн*' -- Result: 1877 rows returned in 11ms
без сортировки по бм25, тупо по порядку
2244 7405-1004066 Двигатель: Клапан форсунки охлажд-я [!поршня!] 2245 7405-1004066 Двигатель: Клапан форсунки охлажд-я [!поршня!] ОАО «КамАЗ» 2445 740-1000106 Двигатель: Кольца [!поршневые!] (Кострома) 2446 740.30-1000106 Двигатель: Кольца [!поршневые!] ЕВРО-1, 2 Кострома 2447 740-1000106-01 Двигатель: Кольца [!поршневые!] ОАО «КамАЗ» 2448 740-1000106 Двигатель: Кольца [!поршневые!] ч/б
Ну или как то так
или так
если не перепутал 1 ссылку со второй
Хз, фуллтекст, на более менее объемах, на моих задачах, стабильно дает приемлемый результат. Прилично меньше 1сек на вполовину меньшее кол-во. Правда с недобазой скулайт. На Mysql, вероятно тоже самое - одно дело индекс, другое - перебрать все с регэксп. Давно не юзал Mysql
стеммер там какой? Плюс переколдовки, терминами яндекса.
Ну типа запрос "1000106 колец поршневых"
Никакой фуллтекст не поймет, что колец и кольца это одно и тоже. Даже со стеммером, лемматизация поможет.
mystem колец колец{кольцо} кольца кольца{кольцо}
В данном случае,
-- At line 1: SELECT rowid, highlight(s, 0, "(*", "*)") as sku, highlight(s, 1, "[!", "!]") as name, price FROM s WHERE s MATCH '1000106 колец поршн* OR 1000106 кольц* поршн*' ORDER BY bm25(s); -- Result: 12 rows returned in 18ms
при условии добавления
private $REPL = [ 'колец'=>'кольц', 'кольц'=>'колец', 'ремен'=>'ремн', 'ремн'=>'ремен', 'мод'=>'межосев дифференц', 'межосев дифференц'=>'мод', 'коленвал'=>'коленчат', 'cummins'=>'камминз', 'камминз'=>'cummins', 'камминc'=>'cummins', и т.д.
результат на картинко, а без этого - колец == кольц
SELECT rowid, highlight(s, 0, "(*", "*)") as sku, highlight(s, 1, "[!", "!]") as name, price FROM s WHERE s MATCH '1000106 колец поршн*' -- Result: 0 rows returned in 3ms
Но, это не совсем верный запрос для поиска. Сам ищу.
И то и то еще параметрами можно поиграть
case 'jpg': $cmd = 'jpegoptim ' . escapeshellarg($this->src) .' --strip-all --all-progressive -m76'; break; case 'png': $cmd = 'pngquant --strip --quality=65-85 --ext .png --force 256 ' . escapeshellarg($this->src); break;
А зачем инфо-сайты? Ну, вот бизнес модель:
1. найду частотный ключ 2. закажу статью 3. получу траф и откручу
А сайты сейчас - наверное только сервисы и b2b, агрегаторы там какие или еще чего
Для m.tm.ua
{'Server': 'nginx/1.16.1', 'Date': 'Thu, 10 Oct 2019 14:06:28 GMT', 'Content-Type': 'text/html', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'X-Powered-By': 'PHP/5.3.29', 'Strict-Transport-Security': 'max-age=31536000;', 'Content-Encoding': 'gzip'}
1. Т.е. кодировку сервер не отдает. А надо бы:
'Content-Type': 'text/html; charset=UTF-8'
2. Можете посмотреть что скрипт то получает, сохранив например в файлик:
file_put_contents( dirname(__FILE__) . '/mail.txt', $Subject . "\n======\n" . $Body ); // redirect to success page
Если там крякозябры, то п.1 решит проблему с большой вероятностью.
data: $("#contactForm").serialize(),
Как советовали выше, вместо
data: "name=" + name + "&email=" + email + "&msg_subject=" + msg_subject + "&phone_number=" + phone_number + "&message=" + message,
тоже может помочь.
Буквоедства ради
<meta charset="utf-8" />
а меж тем
<!doctype html>
а не XHTML