|
|
|
| Исходные данные:
Требуется - страница сайта (список товаров), при выборе какого-то объекта из списка, через AJAX подгружается информация по нему без перезагрузки сайта.
Сделано - помимо подгрузки ведется массив уже загруженного, чтобы при выборе не грузить заново загруженное при предыдущем выборе. При нажатии на кнопку "обновить" рядышком со списком производится перезагрузка данных, как если бы этих данных еще не было.
Проблема - при обновлении страницы (по F5 или даже простому заходу), естессно загруженные данные не сохраняются и каждый выбор снова прогружает данные, которые УЖЕ были прогружены предыдущим заходом.
Нужно!!!! Чтобы загруженные через AJAX данные каким-то образом сохранялись на компе юзера, дабы при новом заходе на сайт они попадали в этот массив (далее работа по алгоритму). Нужен вариант, который не будет гонять туда-сюда лишний трафик:
- Кукисы - не подходят, т.к. они гоняют трафик от посетителя на сервак (или я просто не знаю возможности их хранить БЕЗ передачи значений на сервер)
- Сессии - привязаны к сессии, а если человек закрыл браузер и потом повторил заход ,сессия уже другая...
- Авторизация - большинство посетителей гости + при первом заходе на сайт и прогрузке всех просмотренных данных равносильно передаче практически всех данных сразу, которые были ранее просмотрены, что прогоняет весь ненужный трафик =(
Задачка нетривиальная... Если кто-то найдет решение - будет потрясающе =)))... | |
|
|
|
|
|
|
|
для: ZuArt
(27.06.2007 в 12:41)
| | - Сессии - привязаны к сессии, а если человек закрыл браузер и потом повторил заход ,сессия уже другая...
почему сессия другая? | |
|
|
|
|
|
|
|
для: bronenos
(27.06.2007 в 14:05)
| | Ну хотя бы потому, что после закрытия браузера - данный идентификатор сессии освобождается и его может занять другой человек...
+ в сессиях, вроде, тоже данные при переходе перепрокачиваются от сервака (пусть меня поправят, если ошибаюсь - моя болезнь, постоянно туплю на сессиях) =( | |
|
|
|
|
|
|
|
для: ZuArt
(27.06.2007 в 14:59)
| | ни в куках и в сессиях ни как иначе вы не сможете сохранить загруженные данные, только список того, что человек уже просмотрел и что ему надо загрулить. | |
|
|
|
|
|
|
|
для: AlexSol
(27.06.2007 в 15:06)
| | =(((
наверно я мечтатель, но все равно верю, что способ работать с подгружаемыми данными по описанному выше механизму есть... но он далеко нетривиальный... =(( | |
|
|
|
|
|
|
|
для: ZuArt
(27.06.2007 в 15:21)
| | написать свой броузер. | |
|
|
|
|
|
|
|
для: ZuArt
(27.06.2007 в 15:21)
| | скажите, размер подгружаемых данных каков? | |
|
|
|
|
|
|
|
для: ZuArt
(27.06.2007 в 14:59)
| | сессия хранится, пока передается ее идентификатор (сцылкой или кукой) | |
|
|
|
|
|
|
|
для: ZuArt
(27.06.2007 в 12:41)
| | >Нужно!!!! Чтобы загруженные через AJAX данные каким-то образом сохранялись на компе юзера,
В принципе, браузер хранит в кэше просмотренные файлы, поэтому если сделать таблицу в ячейках которой будут html файлы сидеть, то они второй раз подгружаться не будут. Только как это через ajax организовать - не знаю. Я что-то нигде толкового руководства по нему не найду. Может быть bronenose, наконец, напишет, тогда его книжка нарасхват пойдёт, ещё очередь образуется. :-)) | |
|
|
|
|
|
|
|
для: Eugene77
(27.06.2007 в 21:50)
| | книжку про что =) | |
|
|
|
|
|
|
|
для: bronenos
(27.06.2007 в 23:45)
| | мемуары... | |
|
|
|
|
|
|
|
для: Valick
(28.06.2007 в 07:28)
| | Мемуары спросом не будут пользоваться =) | |
|
|
|
|
|
|
|
для: ZuArt
(27.06.2007 в 12:41)
| | Вы написали:- Кукисы - не подходят, т.к. они гоняют трафик от посетителя на сервак (или я просто не знаю возможности их хранить БЕЗ передачи значений на сервер)
Имею сказать: куки можно обрабатывать javascript'ом - var aCookie = document.cookie, а javascript, как вам должно быть известно, никакого отношения к передаче "трафика от посетителя на сервак" не имеет, ибо обрабатывается браузером посетителя.
При входе на страницу читаете куки (если они есть), из которых вытаскиваете ваш "массив уже загруженного", при выборе товара (или при уходе со страницы, а обновление - это как раз "уход и последубщий приход") заносите в куки массив.
Единственное ограничение - объём: в куках можно хранить не более 4К | |
|
|
|
|
|
|
|
для: CNT
(28.06.2007 в 09:59)
| | вот для этого я и интересовался размером загружаемых данных | |
|
|
|
|
|
|
|
для: bronenos
(28.06.2007 в 10:02)
| | Подгружемые данные на каждую позицию будут меньше Килобайта... НО!!! Почему я спрашивал про кукисы...
Я не совсем понял, как так кукисы не передаются никуда??? Если пользователь настроил себе, скажем, легкий дизайн и эта опция сохраняется в куках... то при переходе на другую страницу или просто при следующем заходе на сайт - скрипт каким-то таинственным образом узнает значение этой куки... КАК??? если кукисы не передаются на сервер???
А речь идет именно о том, как сохранять данные на компе посетителя, но не гонять их туда-сюда...
Приемлемо было бы еще гонять туда-сюда идентификаторы позиций, но описания - никак низя =(((...
Есть такое предположение... Если описание помещать прямо в *.js файл в виде, скажем...
var info = "Тут собсно контент";
OnLoad(info);
|
Функа OnLoad(inf) - объявлена в основном блоке страницы... и там уже выполнять нужную обработку - просто отрисовывать данные, даже массив вести не нун... НО!!! (как обычно =))
1) Каким образом можно ДИНАМИЧЕСКИ подгружать файлы *.js в код причем так, чтобы они по ходу подгрузки выполнялись как поток...
2) Если в коде страницы встречается строчка <script src="....."></script>, то файл кешируется, а если его динамически "подгружать" - будет ли он кешироваться... и если да, откуда будет браться на выполнение код, при повторном обращении - к кешу или браузер будет снова перегружать файло???
В идеальном варианте вышло бы так...
- выбрана позиция...
- браузер "инклюдит с выполнением" какой-то скрипт...
- если скрипт еще не грузился, браузер его грузит в кеш, и выполняет его код...
- если скрипт уже грузился, браузер берет его из кеша и выполняет его код...
- при выборе какой-то опции идет команда браузеру на принудительную повторную загрузку независимо от того, грузился или нет ранее данный скрипт...
ВО КАК!!!
РЕАЛЬНО? | |
|
|
|
|
|
|
|
для: ZuArt
(28.06.2007 в 14:57)
| | динамически грузить можно двумя способами
1.
document.write <инструкция включения>
запустить функцию которая там содержится
2.
загрузить аяксом
то что загрузилось запустить евал()
куки передаются на сервер, но я не советую их использовать - при десяти объектах наверняка память переполнится, а хранить данные в массиве жс - тоже можно добиться того же | |
|
|
|
|
|
|
|
для: bronenos
(28.06.2007 в 15:45)
| | Ну если заставить работать через подгрузку внешних скриптов, которые будут кешироваться... будет вообще рульно ;).. ни куки ни массивы не понадобятся =)))) | |
|
|
|
|
|
|
|
для: ZuArt
(28.06.2007 в 20:13)
| | оперативная память компьютеров давно уже не 64 кб, а интернет у большинства, наверное, на выделенной линии
так стоит ли так возиться ради экономии пары десятков килобайт?
вы что подгружаете, описание или картинки?
если описание. то получайте не хтмл код, а именно описание | |
|
|
|