Squid cache cache removal policy are based on disk space usage, not object "age": objects are removed from the cache when space is needed to cache new objects. In other words you should properly set the size with the cache_dir directive to achieve your "30 minutes cache".
The refresh_pattern directive has options that can override or ignore some headers.
I think that a combination of options described here http://www.squid-cache.org/Doc/config/refresh_pattern/ can help you.