2010-01-03 2 views

ответ

2

Нет. В чистых технических терминах это, скорее всего, обратное, так как для инициализации сеанса будет немного незначительных накладных расходов.

Данные cookie поступают как часть HTTP-запроса независимо от того, что, и PHP читает его в $ _COOKIE по умолчанию. Так что это всегда будет. $ _SESSION требует, чтобы вы в какой-то момент вызывали session_start().

Однако разница в производительности между двумя будет нелепо малой и не стоит беспокоиться.

+0

Звучит хорошо, я буду использовать сессии независимо, но я хотел бы добавить больше вещей в моих печений, но у меня был неудачный опыт один раз, это был JavaScript с помощью куки, хотя и не PHP, моя страница PHP будет загружаться, то JS будет читать cookie и заказывать позицию некоторых элементов на странице, основываясь на данных cookie, и это сильно замедляет страницу при загрузке страницы. – JasonDavis

+0

Это просто неправда. Файлы cookie несут производительность за пределами жизненного цикла страницы - они считываются до того, как страница обрабатывается и записывается при отправке ответа. Переменные сеанса подвержены попаданию на сервер, не влияя на части запроса/ответа цикла, только на время рендеринга страницы. Это яблоки и апельсины. –

0

Я бы поверила, что это будет примерно то же самое, за исключением того, что сессия будет поступать с диска. Кроме того, сеанс происходит из файлов cookie в любом случае.

С точки зрения безопасности, действительно ли вы хотите хранить информацию на стороне клиента? Как правило, я не буду хранить вещи с клиентом.

2

Сессия по умолчанию уже поддерживается куки-файлом с именем phpsessionid (так что сервер может идентифицировать клиента и связывать его с одним из сеансов в памяти сервера), поэтому ваша озабоченность на самом деле не имеет смысла.

Использовать только $_SESSION вместо того, чтобы изобретать его с помощью «пользовательского cookie».

+0

переменная сеанса в PHP не представляет собой абстракцию по простым куки. –

+0

Это зависит только от цели «пользовательского cookie». Его вопрос, однако, не сформулирован именно так. – BalusC

7

В общем, вы не должны беспокоиться о скорости поиска переменной сеанса или cookie.

Однако Вы должны быть осведомлены о различиях между ними:

  • Сессии хранятся на сервере, а это значит, клиенты не имеют доступа к информации, которую вы храните о них. Данные сеанса, хранящиеся на вашем сервере, не должны передаваться полностью с каждой страницы; клиентам просто нужно отправить идентификатор, и данные загружаются с сервера.

  • С другой стороны, Cookies хранятся на клиенте. Они могут быть прочными в течение длительного времени и позволят вам работать более плавно, когда у вас есть кластер веб-серверов. Однако, в отличие от сеансов, данные, хранящиеся в файлах cookie, полностью передаются с каждым запросом страницы.

+2

+1 для «данных, хранящихся в Cookies, передается в полном объеме с каждым запросом страницы» ... и, возможно, каждый запрос на изображение, скрипт и таблицу стилей. Вот почему вы хотите сохранить минимальный размер файлов cookie. Если у вас большой объем данных, храните его на стороне сервера и выталкивайте его из файла с меньшим количеством файлов cookie ID. – bobince

+0

Почему бы вам просто не сохранить идентификатор в файле cookie и получить необходимую информацию для этого идентификатора из базы данных? Куки-файлы в первую очередь широко используются не по соображениям производительности, а по их постоянству и независимости сервера. – Nirmal

-1

В некоторых браузере это не представляется возможным хранить куки, чтобы избежать этой проблемы, вы можете передать (SID идентификатором сессии) или какие-то скрытые, заполнены значения TextBox, а не печенье, используя GET и методы POST ,

+0

Это будет очень очень громоздкая и утомительная работа. Что произойдет, если пользователь захочет вернуться в домен? И что произойдет, если пользователь изменит URL-адрес в случае запроса GET? – Nirmal

+0

Если пользователь изменит sid в URL-адресе, это будет похоже на изменение файла cookie (что возможно) –

0

Хотя примерно эквивалент с точки зрения манипуляций в коде, файлы cookie и переменные сеанса очень разные.

Cookies хранятся в браузере и передаются на веб-сервер с каждым запросом. Если вы храните в браузере пользователя большие файлы cookie или много маленьких, вы увеличиваете размер каждого запроса/ответа, что делает их более дорогим (пропускная способность) и медленнее (время). Кроме того, все, что хранится в cookie, видимо для клиента, поэтому не храните там ничего чувствительного.

Сессионные переменные, с другой стороны, имеют свои собственные проблемы. Поскольку они хранятся в контексте сервера, они не распространяются между кластерными серверами.Если сервер/служба сбрасывается или сеанс пользователя заканчивается, все, что было сохранено в коллекции session [], теряется. Сохранение больших данных в переменной сеанса приводит к снижению производительности на сервере, что может стать очень плохим, если у вас много трафика. Для переменных сеанса требуется файл cookie, который сервер использует для идентификации сеанса пользователя. Это возможно для пользователя, чтобы изменить их кук, чтобы получить доступ к данным, хранящимся в других сеансах, хотя это было бы довольно Freakin' трудно сделать с любым типом значения, так как идентификатор сессии случайным образом, бессмысленные идентификаторами псевдо.

В конечном счете, все это дерьмо должны храниться в базе данных в любом случае. Сессии - это ленивое удобство, которого следует избегать при разработке любого надежного приложения. Куки-файлы должны использоваться минимально - как правило, я храню указатель в файле cookie, который помогает мне идентифицировать пользователя (похожий на cookie sessionID, но специфичный для приложения), но все остальное идет в базе данных. Это дает вам доступность серверных агностиков, безопасное хранилище, срок службы данных, установленные вашим приложением, а не конфигурацию сервера, хорошую возможность запроса и отчета и т. Д.

Базы данных легко выполняются правильно. Там не много, много причин, что любая информация о состоянии вы собираете должна храниться в базе данных, и нет веских причин не к.

Смежные вопросы