Yes, caching is often very important because Salesforce.com imposes limits on how much data can pass through the Partner API. S4S caching is implemented on two levels, metadata and entity.
With metadata caching, S4S caches the schema data. This data is the list of field and data types of the Salesforce object being used. Because S4S caches these objects, it does not need to get their properties from Salesforce.com before formulating a query. This improves performance and lowers the data volume through the Partner API.
Additionally, entity caching can be used to retrieve any object from Salesforce.com and add it to a local cache with a settable expiry time. When the entity cache expires after the requested duration, it is easy to programmatically refresh the cache with new data. The entity cache can also be refreshed regularly using the Sitecore Scheduler.