OK- page cache is working. I believe it has been all along. I can’t delete the files via ftp, but clearing cache in the backend does properly clear them out and new cache files are created properly etc.
It’s easy to see this if you turn both the Template Debugging and Output profiler on in ‘Admin- System Prefs- Output and Debug’. Here’s the page in question with and without serving from cache:
Total Execution Time 82.0482
DATABASE: ee_uptown QUERIES: 497
Total Execution Time 50.6530
DATABASE: ee_uptown QUERIES: 17
I personally would not rely on cache to get that page time down (even if it was getting it down to an acceptable level). To get by in a pinch, it may work. But I’d put optimizing that template high on my priority list once time allows.
Which gets us to the crux of the problem- a 50 second load time still isn’t anywhere close to acceptable. The way the templates are structured are just bogging down when you’re pulling back 400+ entries.
I created a simple template and just put the title on it- rather than pulling in the snippet with the conditionals and such. Using super search and the same get data my times were:
Uncached:
Total Execution Time 6.1567
QUERIES: 37
Cached:
Total Execution Time 0.3009
QUERIES: 17
One thing in particular that is grinding things to a halt are the conditionals. I put in a marker to indicate in the debug the start and end of the ‘prep conditionals’ function. This is what was generated on a cached load of the map page:
1.980896) Start Prep Conditionals
(49.606125) End Prep Conditionals
With over 400 entries, it ends up looping through 4,600+ advanced conditionals, and that is just going to grind things to a halt. Caching will have no bearing on the conditionals at all- just to be clear.
SO- what to do? If it were me, I would put the tag itself in a different template and embed it. I’d do that so I could use php parsed on output to handle a lot of the conditionals. You have to embed because parsing the url as you are- you need php parsed on input in that template. But embed will let you use php on input to get your GET- pass it to the embed via an embed variable- then use php parsed on input to do a lot of the conditional work. There’s no need for a plugin and regex to do some of that matching you’re using in your complex conditionals. Simplify and focus on going as lean as possible- which you can do w/out losing any output. You’ll just need to shift focus a bit on that particular template and structure things so you can optimize. That- or put a default limit of around 50 on that, so the loops won’t get so out of hand.
Does this make sense? Can you see that page cache is working? And see what I mean about the structure in general and the conditionals in particular being the main issue bogging things down on that page? There are a number of ways you could approach that optimization, but I think it’s going to take some structural changed or a page limit to get that particular page loading acceptably.