Периодически от пользователей файлового сервера приходят жалобы на то, что содержимое сетевой папки долго не обновляется.
Не появляются новые файлы в общей сетевой папке
Например, пользователь создал новый файл в сетевой папке (по UNC пути или подключений в виде сетевого диска), а он появляется в ней с большой задержкой (3-4 минуту), даже если обновить содержимое папки в проводнике по
F5
. При этом, если вручную указать полный путь к файлу через UNC путь (
\\srv1\share\file1.txt
), файл открывается сразу, но в папке не отображается.
Проблема, когда содержимое сетевой папки сразу не обновляется в проводнике File Explorer при создании/удалении/переименовании/перемещении файлов и папок в большинстве случае связано с особенностями кэширования сетевых папок в Windows. Источником чаще всего являются:
- Кэширование содержимого сетевых файлов функцией Offline Files (автономные файлы)
- Кэширование метаданных объектов в сетевой папке клиентом SMB.

Отключить кэширование автономных файлов в Windows
По умолчанию, для всех создаваемых сетевых папок в Windows пользователям разрешено делать их содержимое доступным в офлайн режиме. На стороне файлового сервера можно запретить пользователям кэшировать содержимое сетевой папки через встроенную функцию Offlice Files (автономные файлы).
Откройте свойства общей сетевой папки на SMB сервере, перейдите на вкладку Доступ (Sharing) -> Расширенная настройка (Advanced Sharing) -> кнопка Кэширование (Caching). Измените режиме на “Файлы и программы в этой папке недоступны вне сети” (No files or programs from the shared folder are available offline).

Изменить настройки сетевой папки можно с помощью PowerShell:
Set-SMBShare -Name ShareName -CachingMode None
Get-SmbShare -Name ps | fl -Property CachingMode
Управление кэшированием сетевых папок SMB на клиентах
Для улучшения клиентского доступа к сетевым папкам в протоколе SMB v2.0 (см. таблицу с версиями протокола SMB), появился компонент Network Redirector. Задача этого компонента уменьшить трафик и количество SMB запросов между клиентом и сервером за счет кеширование метаданных файлов в сетевых папках.
С настройками по умолчанию, содержимое кэша Network Redirector на клиенте очищается каждые 10 секунд.
Если в сетевой папке много (тысячи+) файлов, или SMB клиенты подключены к файловому серверу по медленным или нестабильным каналом, SMB кэширование может работать некорректно, а пользователи сталкиваться с медленным обновлением содержимого сетевых папок. В этом случае можно попробовать отключить кэширование метаданных протокола SMB на стороне клиентов.
Выведите текущие настройки параметров кэширования на клиенте SMB с помощью PowerShell команды:
Get-SmbClientConfiguration | select DirectoryCacheLifetime, FileInfoCacheLifetime, FileNotFoundCacheLifetime

- DirectoryCacheLifetime – срок жизни кэша с метаданными сетевой папки, полученный при последнем обращении (по умолчанию 10 секунд). В течении этого времени SMB клиент использует кэшированные данные без запроса к серверу, что повышает производительность, но при этом может приводить к небольшой задержке обновления содержимого
- FileNotFoundCacheLifetime – кэш ответа “Файл не найден” (5 секунд).
- FileInfoCacheLifetime – срок жизни кэша с информацией о файле (10 секунд)
Чем больше срок жизни кэша, тем меньше нагрузка на сеть, но тем чаще пользователи могут наблюдать задержки в отображении обновлений файлов в сетевых папках.
Чтобы на клиенте отключить кэширование метаданных в сетевых папках, нужно изменить значения этих параметров на 0:
Set-SmbClientConfiguration -DirectoryCacheLifetime 0 -FileInfoCacheLifetime 0 -FileNotFoundCacheLifetime 0
В старых версиях Windows, в которых отсутствует командлет
Set-SmbClientConfiguration
, можно изменить значения этих параметров в ветке реестра HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters
Создать/изменить эти параметры реестра можно с помощью regedit.exe или PowerShell командлета New-ItemProperty:
$regpath= "HKLM:\System\CurrentControlSet\Services\LanmanWorkstation\Parameters"
$Name1 = "DirectoryCacheLifetime"
$Name2 = "FileInfoCacheLifetime"
$Name3 = "FileNotFoundCacheLifetime"
New-ItemProperty -Path $regpath -Name DirectoryCacheLifetime -Value 0 -PropertyType DWORD -Force | Out-Null
New-ItemProperty -Path $regpath -Name FileInfoCacheLifetime -Value 0 -PropertyType DWORD -Force | Out-Null
New-ItemProperty -Path $regpath -Name FileNotFoundCacheLifetime -Value 0 -PropertyType DWORD -Force | Out-Null

Для применения настроек в силу нужно перезагрузить компьютер. Если эти настройки нужно применить на нескольких компьютерах, вы можете использовать GPO для распространения параметров реестра.
После этого все изменения в сетевой папке будут сразу отображаться на клиенте (содержимое папки обновляется каждый раз и локальных кэш не используется). Однако отключение кэширования сетевых папок увеличивает сетевой трафик и нагрузку на сервер.
- Включенная для сетевой папки опция “Access-based Enumeration” (позволяет скрыть файл и папки, на которых у пользователя нет прав доступа на уровне NTFS) может вызывать медленное обновление списка файлов в сетевой папке с большим количеством объектов;
- На виртуальных машинах Hyper-V с Windows Server 2019 может наблюдаться низкая скорость сети (по сравнению с WS2016/2012R2);
- На доменных компьютерах попробуйте отключить протокол NetBIOS в свойствах вашего TCP/IPv4 подключения (
ncpa.cpl, откройте настройки TCP/IPv4 сетевой карты и выберите Disable Netbios over TCPIP на вкладке WINS). - Попробуйте выполнить сброс сетевых настроек и стека TCP/IP на клиенте Windows
- Если папка находится на DFS сервере, попробуте очистить кеш сервера:
dfsutil cache referral flush
dfsutil /pktflush
dfsutil /purgemupcache


Тоже когда-то столкнулся с этой проблемой.
Нашел это же решение в статье
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-7/ff686200(v=ws.10)
Логичнее в свойствах общей папки на вкладке Доступ — Расширенная настройка — Кэширование, выбрать вторую опцию «Файлы и программы в этой папке недоступны вне сети». Эффект тот же, но не надо править реестр.
Доброго дня. Очень надеялся, что советы из данной статьи помогут решить мою проблему. Но увы, результат нулевой.
И так, проблема:
Фильмы смотрим аппаратным мультимедиа плеером, проигрывая файлы, находящиеся по сети на файловом мультимедиа-сервере (обычный старый компьютер).
Сеть WiFi, скорость соединения порядка 250-300мбит/с.
Не так давно сервер был на Windows XP, сейчас на Windows 10 LTSC.
Сервер иногда переводится в спящий режим (S3).
Когда сервер был на WIndows XP проблем не было, с переходом на WIndows 10 LTSC они возникли.
Смотришь фильм, решил сделать перерыв. Фильм в плеере на паузе. Сервер переводишь в S3. Поделал дела — решил под чаек продолжить просмотр дальше. Так вот, когда сервер был на XP, просмотр шел сразу без задержек.
После перехода на 10 LTSC секунды 3 просмотр идет сразу (то, что успело попасть в кэш плеера), после чего секунд 10 задержка, после чего опять просмотр идет без проблем.
Прошу понять правильно, проблема не в том, что сетевой адаптер долго подключается к сети, нет. Проблема в том, что после выхода из сна (или перезагрузке) и при наличии доступа сервера к сети, сетевая сессия висит секунд 10-14 до момента доступа плеера к используемому ресурсу.
Как избавиться от 10-и секундных задержек доступности ресурсов по сети при выводе сервера на Win10 LTSC из сна или перезагрузке?
Если это поможет, то режим Modern Standby выключен, в связи с тем, что иначе компьютер не удавалось переводить в спящий режим.