I'm looking into why the if-modified-since behaviour doesn't work from the command line.
I've found that it puts a LinkGatherer component into the pipeline, which isn't cacheable, thus preventing caching. I've added a LinkGathererValidity and set the key to "valid" and made isValid() always return VALID, i.e. the LinkGatherer cannot ever be invalid.
Having added this means that generateCachingKey returns with cacheCompleteResponse = true, which is good.
But then validatePipeline() checks to see if the content is in the store, but can't find it.
Even on the second run? It should cache first run and then get it from the cache on the second run.
How do I make the LinkGatherer have minimal impact upon caching?
To achive minimal impact, pipeline implementation must be aware of this compoent and ignore (exclude) key & validity of it when building key & validity of the whole pipeline (possible solution: add PleaseIgnoreMeCacheableProcessingComponent(?) interface -- so that pipeline can safely ignore it from key generation). That's the only way you can get same key as the pipeline without this Link gatherer.
Can I set it to 'ignore this component',
Currently, there is no way.
or have I done the right thing by setting it to always return VALID.
Yes, that's the right thing to do.
Is it okay that getKey() always returns the same thing (i.e. the string "valid")?
Yes, that's ok.
Vadim