You don´t need the server in order to cache the data - the clients may do this for you.
A tile can be built from a regular request to the WMS-service. All you need to know is the extent of the tile. This you can calculate from some well-known tiling scheme.
So, for an area of interest, calculate all the tiles/extends you´d like to prepare for offline, and download them all, and save them to the device in some nice z/y/x pattern so that it´s easy to fetch them later.
Then, build a tiled layer using the same well-known tiling scheme. When this tiled layer requests data from the area of interest, return the tiles already stored from disk.