Fork me on GitHub
Subscribe 3

Ticket #267 (fixed enhancement)

Cache system on extern.php

  • Created: 2011-01-31 09:15:56
  • Reported by: llaumgui
  • Assigned to: Reines
  • Milestone: 1.4.5
  • Component: syndication
  • Priority: normal

On a large board (423 824 message on 47 533 topics), extern.php cause MySQL heavy query.

Params are :
- feed
- type = rss
- order last_post

Make a cache system can be a solution ?

History

llaumgui 2011-01-31 09:17:03

  • Description changed. (Diff)

Reines 2011-01-31 13:56:25

  • Milestone set to 1.4.5.

llaumgui 2011-01-31 14:08:42

Can I fork FluxBB on GitHub and do a pool request ?

Reines 2011-01-31 14:10:49

Sure feel free. What is your plan when you say caching? Caching the generated RSS output? If so - for a certain length of time, or automatically invalidating the cache when appropriate?

llaumgui 2011-01-31 14:13:20

Cache with a TTL ?

Reines 2011-02-03 18:30:18

  • Owner set to Reines.

Reines 2011-02-03 19:37:27

I've created a pull request for this, if someone could give it a check over/test that would be great.

quy 2011-02-03 23:43:31

Checked. Works great.

Reines 2011-02-05 10:55:17

Just as a reminder to myself, as quy mentioned on GitHub, it's possible to generate a ridiculous number of cache files by sending the correct requests. This is actually unlimited, since you can send a request with invalid forum IDs and it is still attempted.

I'm not quite sure what the best solution is - but it needs solved.

Reines 2011-02-06 13:29:35

I'm thinking it wont be easy to solve this, unless we are using a proper cache layer like APC/XCache/etc which can automatically flush entries when memory is full.

Maybe a better solution is to have it only cache the "main" feed. i.e. action=feed, with no tid/fid/nfid.

If we cache a full 50 topics, then filter to the show amount afterwards then we can limit the possible cache entries to a maximum of (number of groups) * (number of language packs) * 2.

Reines 2011-02-07 17:52:09

  • Status changed from open to fixed.

I've now merged this, for more details see the pull request.