| 
 | 
| 
 
Вопрос по кешированию 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  hVostt Дмитрий Мух Ну к примеру не лепить блокировки :) Да и просто исключить лишнее обращение к БД. Ну ведь это только на самых банальных, чисто учебных примерах так. В реальных приложениях есть проекции данных, которые кешируются. Например, скидка, которая рассчитывается из множества данных, размещённых в разных агрегатах. Какой толк от этой реализации? Инвалидация нужна. в реальных приложениях есть и то, о чём я пишу, и то, о чём ты... и во втором случае именно инвалидация происходит ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.04.2020, 20:56 | 
  
  
  
   | 
||
| 
 
Вопрос по кешированию 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  sergq Максимум что скудный умишко подсказывает — ставить в редисе ttl записи минут 20. В итоге запись протухнет через 20 минут и при следующем запросе данные подскребутся с базы Есть еще одна схема кеширования. Если твоя БД легко трекает дату изменения документа (легче чем формирование его в response) то можно сделать такой вот тег в запросе. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Modified-Since Но это потребует от клиента хранения времени актуальности последнего обращения ну и трекать коды 200 и 304 соотв. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.04.2020, 20:59 | 
  
  
  
   | 
||
| 
 
Вопрос по кешированию 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Дмитрий Мух в реальных приложениях есть и то, о чём я пишу, и то, о чём ты... и во втором случае именно инвалидация происходит В твоём примере кода нет важной проверки, что ты не должен делать Set, если данных в кеше нет. Так и должно быть? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.04.2020, 21:01 | 
  
  
  
   | 
||
| 
 
Вопрос по кешированию 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Дмитрий Мух, Всё же, запись в кеш при изменении, даёт реальный боевой профит? Понимаю, что вроде как нет лишнего запроса в БД, но один лишний запрос не является проблемой, важно поддержать все остальные тысячи запросов, а не один несчастный запрос ) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.04.2020, 21:03 | 
  
  
  
   | 
||
| 
 
Вопрос по кешированию 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  mayton Есть еще одна схема кеширования. Если твоя БД легко трекает дату изменения  документа (легче чем формирование его в response) то можно сделать такой вот тег в запросе. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Modified-Since Но это потребует от клиента хранения времени актуальности последнего обращения ну и трекать коды 200 и 304 соотв. Лучше ETag использовать, вроде. Жаль, что разработчики АПИ очень редко поддерживают эти теги. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.04.2020, 21:04 | 
  
  
  
   | 
||
| 
 
Вопрос по кешированию 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  hVostt Дмитрий Мух в реальных приложениях есть и то, о чём я пишу, и то, о чём ты... и во втором случае именно инвалидация происходит В твоём примере кода нет важной проверки, что ты не должен делать Set, если данных в кеше нет. Так и должно быть? Есть такая проверка: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.04.2020, 21:11 | 
  
  
  
   | 
||
| 
 
Вопрос по кешированию 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  hVostt mayton Есть еще одна схема кеширования. Если твоя БД легко трекает дату изменения  документа (легче чем формирование его в response) то можно сделать такой вот тег в запросе. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Modified-Since Но это потребует от клиента хранения времени актуальности последнего обращения ну и трекать коды 200 и 304 соотв. Лучше ETag использовать, вроде. Жаль, что разработчики АПИ очень редко поддерживают эти теги. Да это хороший вариант когда идет тесная дружба фронта с Amazon-S3. Там все ресурсы независимо от разработки уже имеют расчетное поле md5 и его остается только взять из атрибута объекта и передать в responce. В других случаях расчет хеша может быть затруднительным. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.04.2020, 21:17 | 
  
  
  
   | 
||
| 
 
Вопрос по кешированию 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Дмитрий Мух Есть такая проверка: Так это проверка в Get, а не в Set. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.04.2020, 21:19 | 
  
  
  
   | 
||
| 
 
Вопрос по кешированию 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  mayton В других случаях расчет хеша может быть затруднительным. Так е-таг можно и время записать, и вообще что угодно, это не обязательно должен быть именно хеш :) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.04.2020, 21:20 | 
  
  
  
   | 
||
| 
 
Вопрос по кешированию 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  hVostt Дмитрий Мух Есть такая проверка: Так это проверка в Get, а не в Set. А в Set она зачем? Просто кладём актуальные данные в кэш. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.04.2020, 21:21 | 
  
  
  
   | 
||
| 
 
Вопрос по кешированию 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Дмитрий Мух А в Set она зачем? Просто кладём актуальные данные в кэш. Так, погоди. Дмитрий Мух Когда происходят операции типа "по случаю карантина всем скидос увеличивает на 10%", тогда иначе. Например делаем, чтобы какой-то хэш в ключе кэширования сменился, следовательно по ключу в кэше уже ничего находится не будет и он заполнится актуальными данными. Т.е. мы должны реализацию кеша менять? А если это просто аспект? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.04.2020, 21:22 | 
  
  
  
   | 
||
| 
 
Вопрос по кешированию 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Дмитрий Мух, Просто у тебя, получается, изменение обязательно кладёт сущность в кеш. А нафига она там в любом случае? Массовые изменения тоже будут заполнять кеш? В общем, профит до сих пор непонятен. Кеш решает задачу снижения большого количества обращений в БД, а не одного единственного на сущность. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.04.2020, 21:24 | 
  
  
  
   | 
||
| 
 
Вопрос по кешированию 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  hVostt Дмитрий Мух А в Set она зачем? Просто кладём актуальные данные в кэш. Так, погоди. Дмитрий Мух Когда происходят операции типа "по случаю карантина всем скидос увеличивает на 10%", тогда иначе. Например делаем, чтобы какой-то хэш в ключе кэширования сменился, следовательно по ключу в кэше уже ничего находится не будет и он заполнится актуальными данными. Т.е. мы должны реализацию кеша менять? А если это просто аспект? Зачем реализацию кэша менять? И почему именно кэша? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.04.2020, 21:25 | 
  
  
  
   | 
||
| 
 
Вопрос по кешированию 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Дмитрий Мух, Тот же EF, конечно кладёт сущность в кеш при записи. Но это кеш первого уровня, вполне логично. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.04.2020, 21:25 | 
  
  
  
   | 
||
| 
 
Вопрос по кешированию 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  hVostt Просто у тебя, получается, изменение обязательно кладёт сущность в кеш. Если мы кэшируем сущности определённого типа, то да изменение отдельной сущности попадает в кэш. Что не так? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.04.2020, 21:26 | 
  
  
  
   | 
||
| 
 
Вопрос по кешированию 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Дмитрий Мух Зачем реализацию кэша менять? И почему именно кэша? Ну я беру репо, меняю сущность, сохраняю в БД. Это же единственная точка для изменения данных. Блин, всё равно непонятно. Понятно, что это работать будет, непонятно зачем. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.04.2020, 21:26 | 
  
  
  
   | 
||
| 
 
Вопрос по кешированию 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Дмитрий Мух hVostt Просто у тебя, получается, изменение обязательно кладёт сущность в кеш. Если мы кэшируем сущности определённого типа, то да изменение отдельной сущности попадает в кэш. Что не так? Смысл какой? Глобально кешируется чтение, а не запись. Запись инвалидирует. Зачем тут отступать и содержать две разных базовых логики? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.04.2020, 21:27 | 
  
  
  
   | 
||
| 
 
Вопрос по кешированию 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  hVostt Кеш решает задачу снижения большого количества обращений в БД, а не одного единственного на сущность. Ну у нас большое количество сущностей определённого типа, к ним часто обращаются, мы их кэшируем и решаем "задачу снижения большого количества обращений в БД" :) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.04.2020, 21:29 | 
  
  
  
   | 
||
| 
 
Вопрос по кешированию 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Дмитрий Мух hVostt Кеш решает задачу снижения большого количества обращений в БД, а не одного единственного на сущность. Ну у нас большое количество сущностей определённого типа, к ним часто обращаются, мы их кэшируем и решаем "задачу снижения большого количества обращений в БД" :) Так это конкретный кейс, точечная оптимизация. Хотя непонятно, какого профита вы достигаете. Если вы уберёте запись в кеш при изменении, будет ли деградация ощутима и будет ли она вообще? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.04.2020, 21:30 | 
  
  
  
   | 
||
| 
 
Вопрос по кешированию 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  hVostt Дмитрий Мух Зачем реализацию кэша менять? И почему именно кэша? Ну я беру репо, меняю сущность, сохраняю в БД. Это же единственная точка для изменения данных. Да, единственная. И она завёрнута в простой кэш Декоратор :) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.04.2020, 21:31 | 
  
  
  
   | 
||
| 
 
Вопрос по кешированию 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Дмитрий Мух Да, единственная. И она завёрнута в простой кэш Декоратор :) В общем вы из первого уровня кеша сделали второй ) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.04.2020, 21:33 | 
  
  
  
   | 
||
| 
 
Вопрос по кешированию 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  hVostt Хотя непонятно, какого профита вы достигаете. Меньше обращений к БД, не надо лепить блокировки. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.04.2020, 21:33 | 
  
  
  
   | 
||
| 
 
Вопрос по кешированию 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  hVostt Дмитрий Мух Да, единственная. И она завёрнута в простой кэш Декоратор :) В общем вы из первого уровня кеша сделали второй ) Да, это кэш второго уровня. Хочется, чтобы все машины в ферме получали актуальные данные, минуя БД, и как можно быстрее. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.04.2020, 21:35 | 
  
  
  
   | 
||
| 
 
Вопрос по кешированию 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  hVostt mayton В других случаях расчет хеша может быть затруднительным. Так е-таг можно и время записать, и вообще что угодно, это не обязательно должен быть именно хеш :) Да можно. Можно туда просто ложить sequence. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.04.2020, 21:36 | 
  
  
  
   | 
||
| 
 
Вопрос по кешированию 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Но схема с стандартной хеш функцией интересна тем что клиент и сервер ее могут  вычислить независмо друг от друга и тогда протокол может быть (теоретически) вообще без передачи документа. Вот такой уровень секретности ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.04.2020, 21:37 | 
  
  
  
   | 
||
| 
 | 

start [/forum/search_topic.php?author=Vasilev+Andrey&author_mode=last_topics&do_search=1]:  | 
    0ms | 
get settings:  | 
    9ms | 
get forum list:  | 
    13ms | 
get settings:  | 
    9ms | 
get forum list:  | 
    12ms | 
check forum access:  | 
    3ms | 
check topic access:  | 
    3ms | 
track hit:  | 
    58ms | 
get topic data:  | 
    10ms | 
get forum data:  | 
    2ms | 
get page messages:  | 
    60ms | 
get tp. blocked users:  | 
    2ms | 
| others: | 427ms | 
| total: | 608ms | 

| 0 / 0 | 

    Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
    
    
    «На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даете согласие с использованием данных технологий.»
    
    
    ... бла, бла, бла ...