ВЫПОЛНЕН
I
СОХРАНЕННАЯ
ВЕБ-СТРАНИЦА
ЫПОЛНЕН
Такой механизм хранения называется кэшированием. Он обладает двумя преимуществами:
вы получаете веб-страницу намного быстрее, как и в том случае, когда вы запомнили расстояние от Земли до Луны. Когда племянница в следующий раз задаст вопрос, вам не придется гуглить. Вы можете выдать ответ мгновенно;
Facebook приходится выполнять меньше работы.
Кэширование — стандартный способ ускорения работы. Все крупные вебсайты применяют кэширование. А кэшируемые данные хранятся в хеше!
Facebook не просто кэширует домашнюю страницу. Также кэшируются страницы «О нас», «Условия использования» и многие другие. Следовательно, необходимо создать связь URL-адреса страницы и данных страницы.
•fcuetook 6ow/oukout —> ДАННЫЕ СТРАНИЦЫ С ИНФОРМАЦИЕЙ 0 FACEbOOK faCebooK-COW ^ ДАННЫЕ ДОМАШНЕЙ СТРАНИЦЫ
Когда вы посещаете страницу на сайте Facebook, сайт сначала проверяет, хранится ли страница в хеше.
Вот как это выглядит в коде:
cache = {} def get_page(url): if cache.get(unl):
return cache[url] ■< Возвращаются кэшированные данные
else:
data = get_data_from_server(url)
cache[url] = data < Данные сначала сохраняются в кэше
return data
Здесь сервер выполняет работу только в том случае, если URL не хранится в кэше. Однако перед тем, как возвращать данные, вы сохраняете их в кэше. Когда пользователь в следующий раз запросит тот же URL-адрес, данные можно отправить из кэша (вместо того чтобы заставлять сервер выполнять работу).
Шпаргалка
Хеши хорошо подходят для решения следующих задач:
моделирование отношений между объектами;
устранение дубликатов;
кэширование/запоминание данных вместо выполнения работы на сервере.
Коллизии
Как я уже сказал, в большинстве языков существуют свои хеш-таблицы. Вам не нужно знать, как написать собственную реализацию, поэтому я не буду надолго останавливаться на внутреннем строении хеш-таблиц. Но быстродействие-то важно всегда! Чтобы понять быстродействие хеш- таблиц, необходимо сначала понять, что такое коллизии. В следующих двух разделах рассматриваются коллизии и быстродействие хеш-таблиц.
Прежде всего, я немножко приукрасил действительность. Я сказал, что хеш- функция всегда отображает разные ключи на разные позиции в массиве.
На самом деле написать такую хеш-функцию почти невозможно. Рассмотрим простой пример: допустим, массив состоит всего из 33 ячеек.О 1 2 3 7 5 6 7 в 3 10 U 12 13 И 15 16 17 13 13 20 21 22 23 27 25 26 27 23 23 30 31 32
И
Do'stlaringiz bilan baham: |