you only need to set acdirmax=1.
By default the NFS mount uses Close-To-Open cache consistency. This means it will check the modification time and permissions of the file every time it opens a file, regardless of cached data. Issues occur if you add new files to a directory or overwrite files with new versions.
When files are overwritten on server A, just after server B read that same directory, the lookup cache on server B will hold a stale copy of these files. So when we try to access attributes of a file, it will send a request to the fileserver, but it will use the filehandle that is being stored in the cache, eventhough it was replaced by a new file with a different handle. Since the file with the old handle is gone it will report “File not Found”
So the solution to this problem would be to invalidate the lookup cache for a specific directory. Disabling the lookup cache completely is not an option, as it will overload the file server with NFS requests. The lookup cache checks if the cache is still valid by checking the timestamp of the directory that contains the file. If this is in the attribute cache, it will use it from cache. So to resolve your issues you should make sure that the attribute cache, specific for directories, has the lowest cache time possible.
This can be done using mountoptions : acdirmax=1