В распределенных системах кэширование на стороне сервера реализуется всегда, но не снижает объема траффика.
Кэширование на стороне клиента может быть в памяти или на диске. Кэш клиентской памяти может быть организован:
1. Внутри АП каждого пользовательского процесса. Рис5. Управляется КЭШ с помощью библиотеки системных вызовов. Эффективно при повторном открытии и закрытии одних и тех же файлов одними и теми же процессами.
2. Кэширование внутри ядра. Рис6. Во всех случаях даже при попадании в КЭШ требуется выполнять системные вызовы. Файлы остаются в кэше после завершения работавшего с ними процесса.
3. Использование отдельного процесса пользовательского уровня кэш-менеджером. Рис7. Код файловой системы выносится из ядра. В основном соответствует второму варианту. Страницы пользовательского кэша при использовании виртуальной памяти должны быть фиксированы от вытеснения на диск.
Способы согласования данных между клиентским кэшем и сервером:
1. Алгоритм сквозной записи. Когда кэшируемый элемент модифицируется, новое значение помещается в кэш и одновременно на сервер.
2. Алгоритм отложенной записи файл помечается как измененный, все изменения отправляются на сервер раз в определенный промежуток времени.
3. Алгоритм «запись по закрытию». Соответствует сессионной семантике.
4. Алгоритм централизованного управления. Соответствует семантике Unix.