If you use proc in state management, the session is saved in the running process. Therefore, if you have 2 or more workflows, your session will only work by chance. You can use SQL State Management or State Server. Using the state server is pretty fast, but if the state server goes down or reboots, all sessions will be lost. Using a SQL server is somewhat slower, but it has the advantage that the session will be available after a reboot or any kind of interruption. So the choice depends on your requirements. If you are using an e-commerce site or similar, you can configure a sql server with clustering and multiple web servers to get the best uptime.
As for caching, the same thing is that the cache is stored in the workflow. Depending on how expensive it creates objects in the cache, you can use MemCached or something like that. But then you need to serialize / deseriliaze cache objects and send them over the wire to another server, which can also be quite expensive.
source share