https://bugs.winehq.org/show_bug.cgi?id=49592
--- Comment #13 from Martin Prikryl martin@winscp.net --- Sorry for my late answer. It took some time to debug this.
WinSCP uses a list view to implement a file browser. To indicate the icon for the file, WinSCP uses LVN_GETDISPINFO callback.
The reported problem only happens in specific situation, which is actually not related to caching at all.
The problem happens after loading the file list into the list view. In a specific situation, WinSCP moves the focus to specific file (list view item). That happens, when the user browses to the parent directory. WinSCP then focuses the previously visited subdirectory. For the focus, ListView_SetItemState is used with mask=LVIS_FOCUSED. If the change of the focus requires scrolling of the view, Wine immediately triggers the LVN_GETDISPINFO callback. WinSCP does not expect the callback so soon and ignores it. That probably results into use of some default icons. This does not happen in Windows. Windows trigger the callback much later.
It would be easy to change WinSCP not to trigger the problem. But I believe it's against Wine policy.