Фасетные фильтры и сессия в нескольких окнах

alextech

Новичок
А почему при переходе на главную страницу у тебя должно что-то сброситься?
Так устроен роутер, основной механизм который парсит ури, создает экземпляры классов и инклюдит другие файлы.
К примеру при переходе на главную страницу устанавливаются в 0 переменные типа current_page, current_cataloguebranch_id и тд.
При этом не создаются экземпляры классов которые например рассчитывают кол-во страниц в листинге и список подветок каталога.
Все это оч сильно ускоряет выполнение скрипта(всех скриптов с инклюдами).
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Кхм, мне вообще кажется, что роутер не должен знать ничерта о том, что у тебя должно перетереться)
 

alextech

Новичок
Кхм, мне вообще кажется, что роутер не должен знать ничерта о том, что у тебя должно перетереться)
Ээээ, не знаю ))
Я ж сам все придумывал, у меня необходимые классы инициализируются и создаются экземпляры именно в роутере, а не в той страничке которую типа загружаем. Собственно страниц то и нет вообще как таковых.
А в типа страничке уже только вывод инфы которую класс получил например из базы.
Поэтому роутер знает все )))
 
Последнее редактирование:

WMix

герр M:)ller
Партнер клуба
трудно чтото посоветовать, рутер != рутер, страниц нет, ну те архитектура никому непонятная.
переменные на каждую открытую страничку дожны быть в GET хоть даже если это ключик на набор фильтров.
сессия одна на все окна. и даже если сгрупперуешь фильтры в $_SESSION[$category], остается вариант - 2 окна с одной категорией.
 

alextech

Новичок
трудно чтото посоветовать, рутер != рутер, страниц нет, ну те архитектура никому непонятная.
переменные на каждую открытую страничку дожны быть в GET хоть даже если это ключик на набор фильтров.
сессия одна на все окна. и даже если сгрупперуешь фильтры в $_SESSION[$category], остается вариант - 2 окна с одной категорией.
Т.е. вы считаете что вот эту дрянь все же стоит держать постоянно в uri?
mysite.ru/catalogue/id/2335/?goodsmatrix=25,25634,3452,46357,342345,1,0&page=8
или
mysite.ru/catalogue/?id=2335&byprice=25&bycolor=25634&bybrand=3452&bystyle=46357&bymaterial=342345&isnew=1&isonsale=0&page=8

Неужели нельзя выкрутиться с сессиями...
 

WMix

герр M:)ller
Партнер клуба
заметь гугл делает тоже самое...
хранить в сессиях можно, но проблемы уже описаны
 

ksnk

прохожий
Можно посоветовать посмотреть на большие магазины. Есть ли магазин, где фильтр хранится НЕ в адресной строке? Если раздражает # - есть hisrtoryAPI для подмены адреса в адресной строке без перезагрузки.
 

alextech

Новичок
Можно посоветовать посмотреть на большие магазины. Есть ли магазин, где фильтр хранится НЕ в адресной строке? Если раздражает # - есть hisrtoryAPI для подмены адреса в адресной строке без перезагрузки.
На вскидку не скажу, но видел такие. А почему нельзя использовать post, ведь по сути запрос не идемпотентен?
 

ksnk

прохожий
На вскидку не скажу, но видел такие. А почему нельзя использовать post, ведь по сути запрос не идемпотентен?
может потому что результат поиска нельзя послать твитером, по почте и сохранить в истории поиска броузера?
 

WMix

герр M:)ller
Партнер клуба
можно в get типа ?filter_id=42
где
$filters[42] = [
'id'=>2335,'byprice'=>25,'bycolor'=>25634...
];
но только чтоб удовлетворить твой каприз
 

alextech

Новичок
может потому что результат поиска нельзя послать твитером, по почте и сохранить в истории поиска броузера?
Да, это очевидно. Я думал есть технические причины.
Ок, внемлю гласу большинства, попробую перепилить все на гет вместо сессий )
 

alextech

Новичок
можно в get типа ?filter_id=42
где
$filters[42] = [
'id'=>2335,'byprice'=>25,'bycolor'=>25634...
];
но только чтоб удовлетворить твой каприз
У меня примерно так и есть на самом деле, id фильтра это отсылка к базе где может быть все, что угодно.
 

fixxxer

К.О.
Партнер клуба
Ок, внемлю гласу большинства, попробую перепилить все на гет вместо сессий )
Это самое разумное, что можно сделать.

Кстати со сфинксом кто-нибудь работал?
Большинство присутствующих, думаю. А у тебя проблемы с производительностью поиска?
 

Adelf

Administrator
Команда форума
Я считаю, что каждый уважающий себя веб-программист должен попробовать хранить фильтры в сессии, чтобы "урлы были красивыми", обломаться на многовкладковости(и много чем еще), и прийти таки к гетам. Я году в 2008 на этом обжигался :)
 

alextech

Новичок
Большинство присутствующих, думаю. А у тебя проблемы с производительностью поиска?
Я не знаю, сервер то не нагружен, но искренне надеюсь что нет - [time] => 0.011
У меня проблемы с управлением релевантностью $sphinxClient->SetFieldWeights, не могу понять как эта хрень работает, ничего не меняется при установке весов.

Я считаю, что каждый уважающий себя веб-программист должен попробовать хранить фильтры в сессии, чтобы "урлы были красивыми", обломаться на многовкладковости(и много чем еще), и прийти таки к гетам. Я году в 2008 на этом обжигался :)
А я каждый год со слезами жду когда же интернет(веб конечно) впервые за 46 лет наконец то станет полноценным клиент-серверным и мы избавимся от гетов, постов и другой мишуры )))
 

MiksIr

miksir@home:~$
А я каждый год со слезами жду когда же интернет(веб конечно) впервые за 46 лет наконец то станет полноценным клиент-серверным и мы избавимся от гетов, постов и другой мишуры )))
Вебу 24 года (или 22 если вести счет от первого браузера) и он уже эти 22 года как клиент-серверный и как раз благодаря гетам и постам.
 

alextech

Новичок
Вебу 24 года (или 22 если вести счет от первого браузера) и он уже эти 22 года как клиент-серверный и как раз благодаря гетам и постам.
Действительно http начали разрабатывать в 89 и закончили к 91, в 93 появился мозаик. А я считаю от арпанета есличе - 69 год.
 
Сверху