Opóźnij nowe pliki w folderze sieciowym w systemie Windows Server 2008 R2

U jednego z klientów użytkownicy ciągle narzekają, że nowe pliki w udostępnionym folderze sieciowym w systemie Windows Server 2008 R2 nie pojawiają się natychmiast, ale z dużym opóźnieniem, nawet przy aktualizacji zawartości folderu przez F5. Niezależnie od tego, czy użytkownik otwiera folder sieciowy ścieżkami UNC, czy jest podłączony jako dysk sieciowy, nowe pliki i foldery nie pojawiają się natychmiast po skopiowaniu lub utworzeniu, ale po jednej lub dwóch minutach. Ponadto, jeśli ręcznie określisz pełną nazwę pliku za pomocą ścieżki UNC (\\ srv1 \ share \ file1.txt), otwiera się, chociaż nie jest widoczny w folderze.

Dlatego w niektórych momentach lista plików w tym samym folderze sieciowym podczas przeglądania na różnych komputerach może się nie zgadzać. Należy pamiętać, że Windows 7 używa Windows 7 jako systemu operacyjnego na pulpicie.

Faktem jest, że w wersji SMB v2.x wprowadzonej w systemie Windows 2008 / Vista (patrz tabela z wersjami protokołu SMB) w celu zmniejszenia ruchu i liczby żądań SMB między klientem SMB a serwerem oraz przyspieszenia dostępu do folderów współdzielonych i plików przez sieć zaczęła korzystać z mechanizmu buforowania (daje to wymierny efekt podczas uzyskiwania dostępu do folderu sieciowego przez wolny kanał lub kanał z dużymi opóźnieniami). Dlatego składnik Microsoft Redirector na komputerach użytkowników używa lokalnej pamięci podręcznej z metadanymi katalogu sieciowego. Domyślnie ta pamięć podręczna jest opróżniana co 10 sekund..

W przypadku opóźnienia pojawienia się nowych plików w folderach sieciowych możesz wyłączyć buforowanie metadanych dla protokołu SMB v2 po stronie klienta.

Wskazówka. Należy pamiętać, że komputery z systemem Windows 8 i Windows 10 używają klienta SMB v2, aby uzyskać dostęp do folderów sieciowych w systemie Windows Server 2008 R2, chociaż obsługują nowszy protokół SMB v3. Aby ustalić wersję protokołu SMB, za pomocą którego klient komunikuje się z serwerem, uruchom następującą komendę PowerShell:

Get-smbconnection

Istnieją trzy ustawienia rejestru, które kontrolują ustawienia buforowania folderów sieciowych po stronie klienta SMB. Microsoft twierdzi, że domyślne wartości tych kluczy zapewniają najlepszą wydajność w większości środowisk. Te ustawienia zarządzania pamięcią podręczną SMB2 znajdują się w gałęzi rejestru HKLM \ System \ CurrentControlSet \ Services \ LanmanWorkstation \ Parameters.

  • DirectoryCacheLifetime - czas życia bufora metadanych folderu sieciowego (domyślnie 10 sekund).
  • FileNotFoundCacheLifetime - pamięć podręczna odpowiedzi „Nie znaleziono pliku” (5 sekund).
  • FileInfoCacheLifetime - pamięć podręczna z informacjami o pliku (10 sekund).

Zatem domyślnie czas życia bufora w folderze SMBv2 wynosi 10 sekund. Gdy klient aktualizuje zawartość folderu sieciowego, wynik ostatniej aktualizacji jest przechowywany przez klienta przez 10 sekund. Podczas uzyskiwania dostępu do tego katalogu wszystkie aplikacje najpierw próbują użyć tej pamięci podręcznej..

W przypadku napotkania faktu, że nowe pliki nie są natychmiast wyświetlane w folderze sieciowym, należy sprawdzić wartość klucza rejestru DirectoryCacheLifetime i zmniejsz go (lub całkowicie wyłącz).

Aby wyłączyć buforowanie zawartości folderu SMB, w gałęzi rejestru HKLM \ System \ CurrentControlSet \ Services \ LanmanWorkstation \ Parameters stworzyć DWORD parametr o nazwie DirectoryCacheLifetime i zmień na 0 i uruchom ponownie komputer (w ten sam sposób możesz zmienić wartości parametrów FileInfoCacheLifetime i FileNotFoundCacheLifetime na 0).

Następnie wszystkie zmiany w folderze sieciowym zostaną natychmiast wyświetlone na kliencie (zawartość folderu jest aktualizowana za każdym razem, a lokalna pamięć podręczna nie jest używana).