There are two caches: the file-attribute (inode-information) cache and the file-blocks cache.
When a file is opened, the kernel checks with the remote server to determine whether to fetch or revalidate the cached attributes.
The cached file blocks are used only if the corresponding cached attributes are up to date.
The attribute cache is updated whenever new attributes arrive from the server.
Cached attributes are, by default, discarded after 60 seconds.
Both read-ahead and delayed-write techniques are used between the server and the client.
Clients do not free delayed-write blocks until the server confirms that the data have been written to disk.
Delayed-write is retained even when a file is opened concurrently, in conflicting modes.
Hence, UNIX semantics (Section 11.5.3.1) are not preserved.