Windows Server上的网络共享文件夹刷新缓慢

时间:2020-01-09 10:47:01  来源:igfitidea点击:

我的一位客户的用户不断抱怨,新创建的文件没有立即显示在Windows Server 2008 R2的网络共享文件夹上,但是延迟很长,即使他们按F5刷新了共享文件夹的内容也是如此。无论用户使用UNC路径打开网络共享还是将其作为网络映射驱动器连接,复制或者创建新文件和文件夹后,新文件和文件夹仅在1-2分钟内出现,而不会立即显示。但是,如果使用文件的UNC路径(\ lon-file-srv1\public\new_file.docx)指定文件的全名,则该文件将打开,尽管在文件资源管理器中将不可见。

因此,有时,如果在两台不同的计算机上查看,则同一网络共享文件夹中的文件和文件夹列表将不匹配。应该注意的是,用户计算机正在运行Windows 7作为桌面OS。

问题在于,缓存已开始在Windows 2008/Vista的SMB v2.x中使用(请参阅SMB协议版本表),以减少流量和SMB客户端与服务器之间的SMB请求数量,并提供对网络共享文件和文件夹(在使用慢速通道或者无法使用的通道访问网络共享时非常有效)。因此,用户计算机上的Microsoft Redirector组件使用包含网络共享元数据的本地缓存。默认情况下,缓存每10秒清除一次。

如果新文件缓慢显示在网络共享文件夹中时遇到问题,则可以在客户端上禁用SMB v2的元数据缓存。

提示。请注意,运行Windows 8或者Windows 10的计算机使用SMB v2客户端访问Windows Server 2008 R2上的网络共享,尽管它们支持协议SMB v3的较新版本。要查找客户端用于与SMB服务器进行交互的SMB协议版本,请运行以下PowerShell命令:

Get-SmbConnection

有三个注册表参数可以管理SMB客户端上的网络共享缓存设置。 Microsoft声明,这些键的默认值为大多数环境提供最佳性能。 SMB2缓存设置的参数位于注册表项" HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters"中。

  • " DirectoryCacheLifetime"是共享文件夹元数据缓存的生存期(默认为10秒);
  • FileNotFoundCacheLifetime是文件未找到响应缓存(5秒);
  • FileInfoCacheLifetime是将高速缓存保存在文件信息中的时间(10秒)。

因此,网络共享文件夹中SMBv2缓存的默认生存期为10秒。当客户端更新共享文件夹的内容时,最后一次更新的结果将在客户端上存储10秒钟。访问此共享时,所有应用程序都将首先尝试使用此缓存。

如果我们发现新文件没有立即显示在网络共享中,请检查" DirectoryCacheLifetime"注册表项的值,并将其替换为较小的值(或者完全禁用它)。

要禁用SMB文件夹的缓存,请在HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters中创建名为" DirectoryCacheLifetime"的DWORD参数,并将其值更改为" 0"。然后重新启动计算机。以相同的方式,我们可以将FileInfoCacheLifetime和FileNotFoundCacheLifetime参数的值更改为0。

之后,网络共享文件夹中的所有更改将立即显示在客户端上(每次访问文件夹且不使用本地缓存时,文件夹的内容都会刷新)。