Как cookie работают?

Если вы объединяете множество значений, то ни то, ни другое. Добавление списка дорого. Вы можете использовать StringIO для этого. Особенно если вы создаете его для большого количества операций.

from cStringIO import StringIO
# python3:  from io import StringIO

buf = StringIO()

buf.write('foo')
buf.write('foo')
buf.write('foo')

buf.getvalue()
# 'foofoofoo'

Если у вас уже есть полный список, возвращенный вам из какой-либо другой операции, просто используйте ''.join(aList)

Из часто задаваемых вопросов python: Каков наиболее эффективный способ объединить многие строки вместе?

Объекты str и байты неизменяемы, поэтому объединение нескольких строк вместе неэффективно поскольку каждая конкатенация создает новый объект. В общем случае общая стоимость исполнения равна квадрату в общей длине строки.

Чтобы скопировать много объектов str, рекомендуемая идиома состоит в том, чтобы поместить их в список и вызвать str.join () в конце :

chunks = []
for s in my_strings:
    chunks.append(s)
result = ''.join(chunks)

(другая разумно эффективная идиома заключается в использовании io.StringIO)

Чтобы скопировать много объектов с байтами, рекомендуемая идиома заключается в расширении объекта bytearray с использованием конкатенации на месте (оператор + =):

result = bytearray()
for b in my_bytes_objects:
    result += b
blockquote>

Редактирование: я был глупым и имел результаты, вставленные назад, заставляя его выглядеть как добавление в список быстрее cStringIO. Я также добавил тесты для bytearray / str concat, а также второй раунд тестов, используя более крупный список с большими строками. (python 2.7.3)

Пример тестирования ipython для больших списков строк

try:
    from cStringIO import StringIO
except:
    from io import StringIO

source = ['foo']*1000

%%timeit buf = StringIO()
for i in source:
    buf.write(i)
final = buf.getvalue()
# 1000 loops, best of 3: 1.27 ms per loop

%%timeit out = []
for i in source:
    out.append(i)
final = ''.join(out)
# 1000 loops, best of 3: 9.89 ms per loop

%%timeit out = bytearray()
for i in source:
    out += i
# 10000 loops, best of 3: 98.5 µs per loop

%%timeit out = ""
for i in source:
    out += i
# 10000 loops, best of 3: 161 µs per loop

## Repeat the tests with a larger list, containing
## strings that are bigger than the small string caching 
## done by the Python
source = ['foo']*1000

# cStringIO
# 10 loops, best of 3: 19.2 ms per loop

# list append and join
# 100 loops, best of 3: 144 ms per loop

# bytearray() +=
# 100 loops, best of 3: 3.8 ms per loop

# str() +=
# 100 loops, best of 3: 5.11 ms per loop

29
задан Bill the Lizard 28 January 2010 в 20:17
поделиться

4 ответа

Общие сведения о файлах cookie

Файлы cookie передаются браузеру сервером. Браузер раскрывает файлы cookie как применимые только к домену, который изначально предоставил файлы cookie.

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

Ознакомьтесь с ними, чтобы узнать о файлах cookie браузера

Общие сведения о файлах cookie браузера

http: // internet-security .suite101.com / article.cfm / понимание_компьютера_browser_cookies

http://www.willmaster.com/library/cookies/understanding-cookies.php

https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-22_11-6063884.html

27
ответ дан Abhishek Kedia 28 November 2019 в 01:36
поделиться

Обычно файл cookie содержит идентификационный номер сеанса. Идентификационный номер затем подключается к данным сеанса, которые хранятся на сервере. Обычный процесс:

  1. Отправка формы входа
  2. Сервер проверяет имя пользователя и пароль
  3. Если правильно, имя пользователя сохраняется в файле сеанса на сервере, наряду с другой полезной информацией о пользователе (если это администратор сайта, модератор, ИД пользователя и т. д.).
  4. Сервер отправляет обратно куки-файл, содержащий идентификационный номер, который идентифицирует файл сеанса.
  5. Браузер отправляет куки-файл с каждым запросом на этот сервер, поэтому сервер может открыть файл сеанса и прочитать сохраненные данные.

Обычно пароль отправляется не более одного раза (при входе в систему на шаге 1).

8
ответ дан Emil Vikström 28 November 2019 в 01:36
поделиться

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

Каждый раз, когда вы повторно посещаете URL, браузер отправляет крошечный пакет этой информации обратно на сервер, который обнаруживает, что вы вернулись на страницу.

  • Файлы cookie - это причины, по которым вы заходите на сайты, чтобы вам не приходилось вводить идентификатор и пароль при каждом посещении сайта.
  • Веб-мастера могут использовать эти файлы cookie для мониторинга активности пользователей Интернета.
  • Некоторые сайты используют сторонние файлы cookie для отслеживания ваших привычек в Интернете в маркетинговых целях.
0
ответ дан abhijithvijayan 28 November 2019 в 01:36
поделиться

Зависит от того, существует ли много сценариев и возможностей использования cookie-фреймворка.

Одним из сценариев является:

  1. Пользователь отправляет форму авторизации.
  2. Сайт авторизует пользователя и устанавливает cookie-файл, видимый в домене сайта, с именем пользователя, паролем (т.е. хэш MD5) и иногда другой информацией.
  3. Cookie-файл отправляется с каждым запросом, что позволяет сайту проверить, поступил ли запрос от авторизованного пользователя.

Для более подробной информации читайте Статья Википедии о cookie-файлах.

.
2
ответ дан 28 November 2019 в 01:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: