﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Релиб / Веб-программирование / Веб-программирование  / Взаимодействие клиента и сервера с помощью &amp;#100;ocument.cookie / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>Релиб</description><link>http://relib.com/forums/</link><webMaster>robot@relib.com</webMaster><lastBuildDate>Fri, 21 Nov 2008 20:43:58 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: Взаимодействие клиента и сервера с помощью &amp;#100;ocument.cookie</title><link>http://relib.com/forums/Topic905084-9-1.aspx</link><description>Уже столкнулся с ограничением по пункту №2. Не получается создать больше 20 cookie. Это ограничение указано в &lt;A href="http://www.ietf.org/rfc/rfc2109.txt"&gt;RFC 2109. HTTP State Management Mechanism&lt;/A&gt; (см. раздел 6.3 Implementation Limits). Обойти в приницпе несложно, надо сохранять id товаров в одну cookie в виде строки с разделителями. В том же RFC сказано что user-agent должен поддерживать cookie c длиной минимум 4 Кб, что для моих целей вполне достаточно.&lt;/P&gt;&lt;P&gt;Пробное приложение на основе этой идеи я уже написал и оно работает. Надо сейчас внести изменения с учетом максимального кол-ва cookie.</description><pubDate>Mon, 02 Oct 2006 10:58:23 GMT</pubDate><dc:creator>bazile</dc:creator></item><item><title>RE: Взаимодействие клиента и сервера с помощью &amp;#100;ocument.cookie</title><link>http://relib.com/forums/Topic905084-9-1.aspx</link><description>Спасибо. Возможность возникновения гонки все-таки считаю весьма вероятной. Пока думаю как это можно победить.</description><pubDate>Fri, 29 Sep 2006 14:21:36 GMT</pubDate><dc:creator>bazile</dc:creator></item><item><title>RE: Взаимодействие клиента и сервера с помощью &amp;#100;ocument.cookie</title><link>http://relib.com/forums/Topic905084-9-1.aspx</link><description>1) Усли уж такое и будети, то крайне редко. На это вполне можно закрыть глаза.&lt;BR&gt;2) Опять же - врятли. Это должен быть какой-то супер-покупатель. Килобайта 4 у тебя точно есть. &lt;BR&gt;3) Думаю, об этом даже и не стоит упоминать.&lt;BR&gt;4) Опять же - очень мала вероятность.&lt;/P&gt;&lt;P&gt;А общем и целом я считаю это ъорошим подходом. Думаю, его стОит исопльзовать. Минусы слишком незначительные.&lt;BR&gt;</description><pubDate>Fri, 29 Sep 2006 13:50:37 GMT</pubDate><dc:creator>Alexey Spirin</dc:creator></item><item><title>Взаимодействие клиента и сервера с помощью &amp;#100;ocument.cookie</title><link>http://relib.com/forums/Topic905084-9-1.aspx</link><description>В данный момент пишу сайт с возможностью размещения заказа. Все как обычно - есть страницы со списком товаров, посетитель добавляет товары в корзину и затем размещает заказ со страницы корзины. Напротив каждой позиции (товара) есть поле для ввода количества, которое нужно добавить к заказу. И вот тут начинается интересное. На событие onchange поля ввода вызывается код javaScript, который создает новую cookie с именем g#### и со значением равным кол-ву указанным в поле ввода (вместо #### подставляется уникальный id товара). Если посетитель укажет другое кол-во для того же товара, то "новая" cookie заменит "старую". Указание кол-ва для другого товара создаст еще одну cookie. И т.д.&lt;/P&gt;&lt;P&gt;При следующем запросе к любой странице данного сайта бразуер отправит данные cookie вместе со всеми остальными. В этот момент серверный код выполнит реальное обновление содержимого корзины, которое хранится в таблице БД. В этой таблице есть уникальный идентификатор корзины. Он тоже будет храниться в cookie чтобы сервер мог знать в какую корзину добавлять позиции. Если cookie нет, то будет создана новая корзина и посетителю будет отправлена cookie с идентификатором этой корзины.&lt;/P&gt;&lt;P&gt;Обработав cookie c именем g#### сервер отправит клиентскому браузеру ответ, чтобы он удалил данные cookie так, что двойной обработки не произойдет.&lt;/P&gt;&lt;P&gt;Плюс такого подхода в его широкой поддержке и, как мне кажется, относительной простоте. Браузеру нужно только поддерживать cookie и javaScript. Сервер же обрабатывает несколько запросов клиента пакетом.&lt;/P&gt;&lt;P&gt;Серверная часть пишется на ASP.NET и подобный механизм удобно реализуется путем создания своего HTTP модуля с обработчиком события BeginRequest. Но конкретный язык реализации здесь не важен. Мне хотелось бы узнать кто что думает насчет жиэнеспособности такого подхода? И, пожалуйста, не надо рассказывать про AJAX, здесь речь о другом.&lt;/P&gt;&lt;P&gt;Мне удалось выделить следующие возможные проблемы:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;STRONG&gt;Состояние "гонки" между двумя запросами.&lt;/STRONG&gt; К примеру, посетитель вводит для товара с id=123 кол-во 5 (создается cookie g123=5). Затем открывает ссылку с этого сайта в новом окне, содержимое которого из-за временных проблем со связью грузится медленно. Он возвращается в первое окно и меняет там кол-во для товара id=123 на 1 (создается cookie g123=1). Теперь он открывает ссылку в этом же окне (содержимое второго окна все еще грузится!) и оно загружается раньше чем содержимое второго окна. В корзину добавляется товар с количеством 1. В этот момент загружается содержимое второго окна, где была отправлена cookie g123=5 и в корзине теперь 5 позиций товара вместо 1.&lt;BR&gt;&lt;BR&gt;Что с этим делать пока непонятно.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Возможность столкнуться с ограничением на максимальный объем/кол-во cookie.&lt;/STRONG&gt; MSIE точно имеет подобные ограничения, зависящие от security zone в которую входит сайт. К сожалению не могу найти конкретные цифры. Кроме того надо найти аналогичную информацию, как минимум, для Opera и Firefox.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Потеря cookie из-за очистки кеша браузера.&lt;/STRONG&gt; Если клиент добавив товары в корзину тут же закроет браузер и очистит кеш и/или удалит все cookie, то данные не будут сохранены. С другой стороны он потеряет не только cookie c необработанным кол-вом, но и другие cookie. Данная ситуация вероятна, но делать тут врядли что-то нужно.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Отсутствие поддержки cookie/javascript.&lt;/STRONG&gt; Этот пункт здесь просто для напоминания. Маловероятно что такое случится так как на сайте есть и другая функциональность зависящая от cookie/javascript так что данный случай мы игнорируем.&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;Итак, у кого какие мысли?</description><pubDate>Fri, 29 Sep 2006 13:35:49 GMT</pubDate><dc:creator>bazile</dc:creator></item></channel></rss>