Fingerprint.md
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Struchkov Mark 2024-09-13 07:09:47 +03:00
parent ae3ddb3a5a
commit 4ed89604e0
No known key found for this signature in database
GPG Key ID: A3F0AC3F0FA52F3C
5 changed files with 41 additions and 3 deletions

View File

@ -0,0 +1,28 @@
---
aliases:
tags:
- maturity/🌱
date: 2024-09-10
zero-link:
- "[[../../meta/zero/00 Архитектура ИС|00 Архитектура ИС]]"
parents:
- "[[highload/Инвалидация кэша|Инвалидация кэша]]"
linked:
- "[[../garden/ru/dev/architecture/highload/Кэширование на стороне браузера|Кэширование на стороне браузера]]"
---
При реализации [[highload/Кэширование на стороне браузера|кэширования на стороне браузера]] важно иметь механизм [[highload/Инвалидация кэша|инвалидации кэша]]. Иначе пользователи могут продолжить видеть неактуальные JS-скрипты и CSS-стили, что приведет к проблемам.
Самый простой способ побороть эту проблему, это использовать fingerprint файла. То есть, когда файл меняется, вы меняете его название. Делается это обычно добавлением какого-нибудь префикса/суфикса к названию файла.
Например у нас есть файл стилей `style.css`, мы можем посчитать для него MD5 хэш и добавить его в название. Тогда у нас получится следующее название: `style.e626dd36e0085927f334adbe3eb38e7a.css`.
При любом изменении файла MD5 хэш должен пересчитываться. Таким образом при изменении файла у него будет другое название, и браузер будет вынужден скачать его в любом случае.
***
## Мета информация
**Область**:: [[../../meta/zero/00 Архитектура ИС|00 Архитектура ИС]]
**Родитель**:: [[highload/Кэширование на стороне браузера|Кэширование на стороне браузера]]
**Источник**:: [[highload/Инвалидация кэша|Инвалидация кэша]]
**Создана**:: [[2024-09-10]]
**Автор**::
### Дополнительные материалы
-

View File

@ -23,7 +23,7 @@ linked:
- Опасно из-за риска мгновенной инвалидации и сопутствующей [[Перестройка кэша|перестройки кэша]]
- Использование [[../../algorithm/Алгоритмы вытеснения|алгоритмов вытеснения]]
Дополнительно для работы со статическими файлами можно отменить [[../../../../../_inbox/Fingerprint|Fingerprint]].
Дополнительно для работы со статическими файлами можно отменить [[../Fingerprint|Fingerprint]].
Один из подходов это инвалидация по времени. Для кэшированных данных устанавливается TTL, и по прошествию времени кэш удаляется. Такое вариант подходит для редко изменяемых данных, устаревание которых не приводит к серьезным проблемам в бизнес-логике, например словари. При таком варианте важно подобрать оптимальное время жизни кэша, слишком маленькое время жизни будет давать плохую производительность, слишком большое ухудшит опыт пользователей. В оценке эффективности кэша поможет метрика [[CacheMissRate]].

View File

@ -31,7 +31,7 @@ linked:
Инвалидация:
- Самый простой вариант указывать версию в GET параметрах.
- Для статики можно использовать [[Fingerprint]]
- Для статики можно использовать [[../Fingerprint]]
***
## Мета информация

View File

@ -6,4 +6,10 @@ zero-link:
title: Git
---
- [Удаление .DS_Store из Git репозитория](../../dev/git/Удаление%20.DS_Store%20из%20Git%20репозитория.md)
- [Откатываем git reset hard в Idea](../../dev/git/Откатываем%20git%20reset%20hard%20в%20Idea.md)
- [Откатываем git reset hard в Idea](../../dev/git/Откатываем%20git%20reset%20hard%20в%20Idea.md)
- [00 Снипеты для Git](../../garden/ru/meta/zero/00%20Снипеты%20для%20Git.md)
Изменение места создания папки `.git`:
```bash
git init --separate-git-dir=/path/to/my-git-storage /path/to/my-project
```

View File

@ -1,6 +1,10 @@
---
tags:
- type/zero-link
title: Разработка
aliases:
- Разработка
zero-link:
---
- [Java разработка](00%20Java%20разработка.md)
- Архитектура