Иван

Иван

С нами с 30 июля 2021; Место в рейтинге пользователей: #4914
Иван
27 апреля 2022, 16:51
0
То есть, нужно парсить этот тег минимум 2 раза — это и есть рекурсия. Так весь MODX и работает, это его чуть ли не основная фишка.
Я не вижу проблемы где-то эту рекурсию использовать так, а где-то иначе. Например, для условий «if-else» сделать другую логику. Логично сначала парсить условие, а потом уже контент. А про «фишку» впервые слышу.
Иван
27 апреля 2022, 11:47
0
Как ты исправишь основную фишку рекурсивого парсера — рекурсивный разбор тегов?
Если я правильно понял, то проблема в том, что парсер MODX парсит изнутри, а не снаружи, поэтому парсит лишнее. Не понял почему это нельзя исправить.
Иван
26 апреля 2022, 22:23
0
То есть, если вы прячете какой-то кусок оформления для вывода только нужным пользователям за условиями в чанке — именно этот кусок и будет первым делом разобран, а потом MODX решит, нужно ли его выводить, когда проверит условие с юзером.
Прошу прощения за мой дилетантский вопрос, но не лучше ли было исправить этот косяк и прислать код разработчикам MODX на Гитхаб? Обработку простых тегов тоже можно было бы предложить оптимизировать в коде основного парсера.
Иван
04 августа 2021, 19:01
0
Кстати, использование механизма кэширования (в файлах) это тоже хорошее решение. Ключ к кэшу может создать сам пользователь (разработчик конкретного сайта), а по умолчанию использовать группу пользователя.
Иван
04 августа 2021, 18:44
0
В сессиях обычно хранится уникальная информация пользователя. А форма чаще всего используется не персонально для пользователя, а для групп пользователей (боты входят в анонимную группу). Можно было просто создавать записи в БД для группы пользователей, использование сессии здесь не нужно. Можно так же получать массив параметров сниппетов, но для сохранения написать свою одну функцию (+ свой коннектор). Это просто как вариант. Возможно, есть и другие. Я не критикую, а просто высказываю мнение. Никого не хотел обидеть) Возможно, если бы я писал такое дополнение, то тоже выбрал бы лёгкий путь, всё наперёд просчитать сложно, это я понимаю.
Иван
04 августа 2021, 18:28
0
Казалось бы, совершенно заслуженный камень в мой огород
Василий, я ни в коем случае не хотел кидать в ваш огород камень. Просто указал, что проблема существует и её нужно решать, а не делать костыли. Вы выбрали самый просто способ, но есть и другие. Как минимум можно не сохранять параметры в сессии для ботов, думаю можно найти библиотеку для фильтрации по юзер агенту и т.п. (или написать самому). Не хотел Вас задеть). Уважаю за проделанную работу и полезные дополнения.
Иван
03 августа 2021, 14:56
0
Я писал про дополнение «AjaxForm» (может ещё какое-то есть), которое очень популярно. Этот сниппет для каждого посетителя сайта (в т.ч. для ботов) создает записи в сессии, где хранит параметры сниппетов. Представляете какой это объём информации для сайта с хорошей посещаемостью? Сталкивался с сайтами, где на одну страницу минимум 5 раз используется AjaxForm.
Во времена повсеместного бума интернет-приватности и частичного отказа от cookies я вот хочу перенести в сессии некоторые настройки персонализации для незарегистрированных посетителей сайта (например открыто или закрыто боковое меню) и вообще сводить к минимуму использование cookies там где возможно.
К Вашему сведению, сессия работает через куку, где хранится её ID. Так что переводить на сессию в Вашем случае смысла нет. Лучше используйте в JS LocalStorage или SessionStorage. Технологии нужно использовать по их назначению, тогда и проблем не будет.
Иван
30 июля 2021, 17:03
0
Уточню что я имею ввиду. Да, в MODX есть особенность, что если отключить «anonymous_sessions», то сессии будут работать только у авторизованных пользователей. В некоторых случаях это подходит (заставлять авторизовываться). Но важен также размер хранящейся информации в таблице сессии. Его нужно свести к минимуму + уменьшить время жизни сессии до суток (или даже 12 часов). Этого вполне достаточно для большинства сайтов. Но по-хорошему эту особенность с «anonymous_sessions» нужно исправить. Сессии должны создаваться только тогда, когда они нужны.
Иван
30 июля 2021, 15:59
0
А корзина товаров? А если я товар «отложил»...
Про это я уже написал. Зачем повторяться? Какой процент всех посетителей использует корзину товаров? Я думаю меньше 50%.

а если у нас правда что-то работает через ajax?
Для аякса необходимы сессии? Это что-то новенькое)

Правильнее бы конечно создавать сессии когда они действительно нужны. Но MODX работает на своей волне
Не MODX, а указанное дополнение.

Давайте делать статичные странички на html!
Ну да, переписать дополнение или использовать другое не нужно. А нужно к этому дополнению городить кучу костылей))
Иван
30 июля 2021, 13:10
0
Дополнение. Прочитал по ссылке и ужаснулся:
При посещении какой-либо веб-страницы сайта, созданного на PHP, создается сессия.
Видимо автор этого текста изучает PHP только в совокупности с MODX (и AjaxForm).

В сессии хранятся данные, которые присущи только вашему визиту. Например, корзина товаров, информация о том, авторизовались ли вы для входа в личный кабинет и так далее.
А если я не авторизовался и ничего не положил в корзину, то и сессия мне не нужна. На нормальных сайтах именно так и происходит.
Иван
30 июля 2021, 12:44
0
Вообще хорошо бы понимать, что сессии должны создаваться только для авторизованных пользователей. Вряд ли все эти посетители, которые заходят на ваш сайт, регистрируются и авторизуются. Более разумно просто отказаться от использования таких дополнений как AjaxForm, который для каждого посетителя создает сессию. Тогда таблица вообще не будет пухнуть.