Кэширование является просто практикой того, чтобы хранить данные в и получения данных из высокоэффективного хранилища (обычно память) или явно или неявно.
Позволяют мне объяснить. Память быстрее к доступу, чем файл, удаленный URL (обычно), база данных или любое другое внешнее хранилище информации, которую Вы любите. Таким образом, если действие использования одного из тех внешних ресурсов значительно затем, можно извлечь выгоду из кэширования для увеличения производительности.
Knuth однажды заявил, что преждевременная оптимизация является корнем всего зла. Ну, преждевременное кэширование является корнем всех головных болей, что касается меня. Не решайте проблему до Вас , имеют проблема. Каждое решение, которое Вы делаете, приходит по стоимости, которую Вы оплатите, чтобы реализовать его теперь и заплатить снова для изменения его позже так, чем дольше можно отложить принимать решение и изменять систему, тем лучше.
Поэтому сначала определяют, что у Вас на самом деле есть проблема и где это . Профилирование, вход и другие формы тестирования производительности помогут Вам здесь. Я не могу подчеркнуть достаточно, насколько важный этот шаг. Количество раз я видел, что люди "оптимизируют" что-то, что не является проблемой, колеблется.
хорошо, таким образом, у Вас есть проблема производительности. Скажите, что Ваши страницы выполняют запрос, который занимает много времени. Если это - чтение затем, у Вас есть много опций:
, Если это - обновление (или обновления происходят, который должен быть отражен в Вашем кэше считывания) затем это немного более сложно, потому что это бесполезно наличие старого значения в кэше и более нового значения в базе данных, таким образом, что Вы затем предоставляете своим страницам непоследовательное представление данных. Но вообще говоря существует четыре подхода к этому:
то, Которое из вышеупомянутых методологий Вы выбираете, будет во многом зависеть от Ваших требований, какие технологии Вы используете и большое количество других факторов (например, кластеризируете, и поддержка кластерных систем требуется?).
трудно быть более конкретным, чем это и дать Вам указания на то, что обойтись без знания очень [еще 1118] деталь о Вашей проблеме (как то, есть ли у Вас проблема).
Значение мусора не назначено , скорее это значение уже существует. Когда вы выделяете переменную, вы резервируете часть памяти - пока вы не перезапишете ее, эта память будет содержать любую «случайную» информацию, которая была там раньше.
В качестве метафоры подумайте о выделении переменной, как о покупке участка земли - до тех пор, пока вы что-то делаете с этим (например, строите дом), на земле будет только тот мусор, который там уже стоял (например, старый полуразрушенный дом).
Некоторые языки автоматически заполняют новые присвоенные переменные нулями - это требует времени. В языках с большим количеством "сделай сам", таких как C, такое дополнительное поведение не гарантируется (хотя в некоторых системах память очищается независимо от языка, например, в качестве меры безопасности)
Память используется и повторно используется в различных точках вашего приложения. Например, по мере того, как стек вызовов вашего приложения увеличивается и уменьшается, одно и то же место в памяти может перезаписываться много-много раз. Следует помнить, что когда часть памяти заброшена, она не обнуляется, поэтому, если вы не укажете новое начальное значение для этого места в памяти, при повторном использовании вы получите старое, «мусорное» значение.
Некоторые языки и реализации структуры по умолчанию инициализируют память по мере ее использования. Другие - нет, поэтому важно внимательно прочитать документацию на вашем языке, чтобы знать, чего ожидать.
Никто явно не назначает значение захвата. Если вы создаете переменную, определяется только местоположение переменной, а не ее значение. Вот почему мы его инициализируем. Значение мусора могло быть получено из некоторых предыдущих операций над той же памятью старыми процессами! Так что он может вместить что угодно. Я думаю, что это касается довольно большого количества языков. Я не уверен насчет списка! :)
Когда мы создаем переменную и не инициализируем ее, ничего не происходит. Когда вы читаете значение из этой переменной, вы получаете данные из памяти, где сейчас находится переменная. Это может выглядеть как мусор / случайное значение только потому, что переменные помещаются в память с некоторой степенью случайности.