Стратегии кэширования в сети? [закрытый]

Я сделал бы это вместо проверки obj.hasOwnerProperty в каждом цикле for ... in.

var obj = {a : 1};
for(var key in obj){
    //obj.hasOwnProperty(key) is not needed.
    console.log(key);
}
//then check if anybody has messed the native object. Put this code at the end of the page.
for(var key in Object){
    throw new Error("Please don't extend the native object");
}
7
задан Luc Touraille 4 May 2012 в 13:00
поделиться

8 ответов

Я работал с DotNetNuke последний раз для веб-приложений и существует много вещей, которые я рассматриваю каждый раз, когда я реализую кэширующиеся решения.

  • Все пользователи должны видеть кэшируемое содержание?
  • Как часто каждый бит содержания изменяется?
  • Действительно ли я могу кэшировать всю страницу?
  • Мне нужен ручной способ произвести чистку кэша?
  • Я могу использовать единственный механизм кэширования для всего сайта, или мне нужны несколько решений?
  • Какое влияние происходит, если informaiton так или иначе устарел?
3
ответ дан 7 December 2019 в 12:26
поделиться

Я посмотрел бы на каждую функцию Вашего веб-сайта/приложения решительное для каждой функции:

  • Это должно кэшироваться?
  • Сколько времени это должно кэшироваться для?
  • Когда кэш должен быть вычеркнут?

Я лично шел бы вразрез с кэширующимися целыми страницами в пользу кэширующихся разделов веб-сайта/приложения.

1
ответ дан 7 December 2019 в 12:26
поделиться

Прежде всего, если Ваш код будет оптимизирован, как Вы сказали, Вы будете только видеть noticable выигрыши в производительности, когда сайт будет коваться с большим количеством запросов.

Однако Это быстрее для получения по запросу ресурсов от RAM, чем от диска, таким образом, веб-сервер сможет обработать больше запросов при наличии кэширующейся стратегии.

Что касается знания, когда Вы испытываете необходимость в кэшировании, полагайте, что даже современные веб-серверы низкого уровня могут обработать сотни запросов в секунду, поэтому если Вы не ожидаете достойного объема трафика, кэширование - вероятно, что-то, что можно просто пропустить.

Кроме того, при получении по запросу содержания от базы данных (например, StackOverflow, вероятно, делает это), кэширование может быть очень полезным, потому что операции базы данных являются относительно дорогими и могут быть огромным узким местом в ситуациях большого объема.

Что касается сценария, когда не уместно кэшироваться или когда кэширование становится трудным... При попытке кэшировать динамическую страницу, которая, скажем, отображает текущую дату и время, то Вы будете постоянно видеть старую дату/время, если Вы немного больше не свяжетесь со своей стратегией кэширования. Таким образом, это - что-то для размышления о.

1
ответ дан 7 December 2019 в 12:26
поделиться

Какой язык Вы используете? С ASP у Вас есть некоторое очень легкое кэширование только с добавлением некоторого тега свойства по методу, и значение кэшируется в зависимости от времени.

Если Вы хотите больше управления кэшем, можно использовать некоторую популярную систему как MemCached и иметь контроль со временем или событием.

0
ответ дан 7 December 2019 в 12:26
поделиться

Yahoo, например, "присваивает версию" их JavaScript, таким образом, Ваш код-1.2.3.js загрузок браузера и когда новая версия появляется, они ссылаются на ту версию. Путем выполнения этого они могут сделать свой код JavaScript кэшируемым в течение очень очень долгого времени.

Что касается общего ответа я думаю, что он зависит от Ваших данных, от того, как часто делает он изменяется. Например, изображения не изменяются очень часто, но страницы HTML делают. Страница "About us" не изменяется слишком часто, но раздел новостей делает.

0
ответ дан 7 December 2019 в 12:26
поделиться

Какое кэширование? Серверное кэширование? Клиентское кэширование?

Клиентское кэширование является легкой задачей с определенными вещами, как Статический HTML, SWFs и изображения. Фигура, как часто активы, вероятно, изменятся и настроят, "Истекает" заголовки как соответствующие. (2 дня? 2 недели? 2 месяца?)

Динамические страницы, по определению, немного более трудно кэшировать. Были некоторые исследования в кэшировании определенных блоков с помощью JavaScript (и ухудшаясь к IFrames, если JS не доступен.) Это однако, могло бы быть немного более трудным модифицировать в существующий сайт.

DB и кэширование прикладного уровня могут или не могут работать, в зависимости от Вашей ситуации. Это действительно зависит от того, где Ваши узкие места. Выяснение, где Ваше приложение проводит большую часть времени на рендеринге страницы, является, вероятно, приоритетом 1, затем можно начать смотреть на то, где и как кэшироваться.

0
ответ дан 7 December 2019 в 12:26
поделиться

Можно кэшироваться ко времени. Это полезно для данных то изменение быстро. Можно установить время в течение 30 секунд или 1 минуты. Конечно, это требует некоторого трафика. Больше трафика, который Вы имеете, больше можно играть со временем, потому что, если у Вас есть 1 посещение каждый час, это посещение будет, заполняют кэш и не использование его...

Можно кэшироваться событием..., если данные изменяются, Вы обновляете кэш... это - одно очень полезное, если данные должны быть точными для пользователя очень быстро.

Можно кэшировать статическое содержание, что Вы знаете, что это не изменит ofen. Если у Вас есть лучшие 10 изо дня, которые обновляются каждый день, чем можно снабдить все в кэше и обновлении каждый день.

0
ответ дан 7 December 2019 в 12:26
поделиться

Где доступно, высматривайте целое объектное кэширование памяти. В ASPNET это - встроенная функция, где можно просто посадить объекты бизнес-логики в Приложении IIS и получить доступ к ним оттуда.

Это означает, что можно сохранить все, что необходимо генерировать страницу в памяти (сохраняющий записи к базе данных) и генерировать страницу без ЛЮБОЙ базы данных IO.

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

Другие методы включают локализованное кэширование вывода, где Вы получаете вывод прежде, чем отправить и сохраняете его в файл. Здорово для статических разделов (как навигация на определенных страницах или текстовые тела) и включают их, когда их требуют. Большая часть чистки реализаций кэшировала объекты как это, когда запись происходит или после определенного промежутка времени.

Затем там наименее "точно": целое кэширование страницы. Это - самый высокий исполнитель, но это довольно бесполезно, если у Вас нет очень простых страниц.

0
ответ дан 7 December 2019 в 12:26
поделиться
Другие вопросы по тегам:

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