That's interesting. It suggests this might only be a major issue when caching is used in conjunction with parseExtensions() (which, though a bit of magic, automatically inserts the proper Content-type header for you). It seems a bit hackish to have to explicitly not cache these headers in your views.
I'll post a bug... skylar On Jan 26, 10:59 am, AD7six <[email protected]> wrote: > On Jan 26, 7:38 pm, skylar <[email protected]> wrote: > > > > > Hi, > > > I'm working on a site using CakePHP that has various feeds in JSON and > > XML. I tried caching some of those feeds today using controller-level > > view caching and ran into an annoying problem - cached views don't > > seem to retain the mime type of the document. That is, in most cases, > > a cached view (not elements) will be served up as text/html by > > CakePHP, not the type of the original document. > > > To recreate this, simply try offering a XML or JSON based view in a > > controller, cache it, then load it twice. (using parseExtensions() > > might also help) The first request works correctly (uncached request), > > but the second request will come back as text/html (except for an edge > > case around XML). > > > The problem seems to be at line 508 of cake/libs/view/view.php. (I'm > > using 1.2.0.7962) This is where the view class outputs a cached view > > file, if valid. The only check here for alternative document mime- > > types is this confusing check for a layout named 'xml': > > > if ($this->layout === 'xml') { > > header('Content-type: text/xml'); > > } > > > The cache file doesn't have any properties that retain the extension > > or type that would have been used by RequestHandler (or other code) to > > find the right content type. However, $this->here does capture the > > extension implicitly. > > > It seems the proper thing for the caching mechanism to do is to store > > the content type as a variable in the view cache file (eg, $this->ext > > or $this->content_type) so that the proper header can be recreated > > with the cache request. However, I don't know much about the CakePHP > > internals so I'll defer primarily to explaining the situation in hopes > > of filing a good bug and rallying a fix. This seems like a major > > oversight in the caching system as feeds (ajax, json, xml) are > > becoming an increasingly critical part of any modern web application. > > > Has anyone noticed this before? Known workaround (without modifying > > cake lib code)? Is a bug already filed on this that I couldn't find? > > Anything else I'm missing here? > > That's how the book handles > it:http://thechaw.com/cakebook/source/views/layouts/rss/default.ctp > > hth, > > AD --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "CakePHP" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~----------~----~----~----~------~----~------~--~---
