# |
Jul 17th 2018, 11:49 |
neon1024 |
You’d have to disable JS to use the footer :rolling_on_the_floor_laughing: |
# |
Jul 17th 2018, 11:49 |
neon1024 |
I can’t imagine the horror if you have endless scroll, and only put certain links in the footer |
# |
Jul 17th 2018, 11:48 |
neon1024 |
It’s like the kitty who wants to be stroked, but when you get close just wanders out of hands reach |
# |
Jul 17th 2018, 11:48 |
neon1024 |
For the love all things holy, don’t have a footer. Please don’t have a footer. |
# |
Jul 17th 2018, 11:47 |
neon1024 |
Hah, hate those things. |
# |
Jul 17th 2018, 11:47 |
birdy247 |
FYI, we are using a endless scroll on the frontend |
# |
Jul 17th 2018, 11:47 |
birdy247 |
just wondered if there was a less expensive way of quering all books every time |
# |
Jul 17th 2018, 11:47 |
birdy247 |
so the plan is to query the DB for ALL books, pop into a collection and then take the necessary |
# |
Jul 17th 2018, 11:47 |
neon1024 |
Yeah, so you’ll need to get all teh books, calculate the score, setup the collection and then paginate that new collection I guess right? |
# |
Jul 17th 2018, 11:46 |
neon1024 |
Books right? So you’re getting all the books anyway |
# |
Jul 17th 2018, 11:46 |
birdy247 |
1 User would want to see books with a score > 8 |
# |
Jul 17th 2018, 11:46 |
neon1024 |
Well you either paginate Books, or you paginate Users. |
# |
Jul 17th 2018, 11:45 |
neon1024 |
Okay a trait, not an interface, but I was almost right! |
# |
Jul 17th 2018, 11:45 |
neon1024 |
https://github.com/cakephp/cakephp/blob/master/src/ORM/ResultSet.php#L34 |
# |
Jul 17th 2018, 11:45 |
birdy247 |
@neon1024 If we paginate a collection, thats all good. but we still need to retrieve all books from the sql. |
# |
Jul 17th 2018, 11:44 |
neon1024 |
Shouldn’t be too hard, as I think ResultSet implements CollectionInterface iirc |
# |
Jul 17th 2018, 11:43 |
matt |
thanks, yes think we will go with paginating the collection manually but with caching |
# |
Jul 17th 2018, 11:42 |
neon1024 |
At least then you alleviate some of the pressure, in exchange for slightly stale data |
# |
Jul 17th 2018, 11:42 |
neon1024 |
Keyed by user id or something |
# |
Jul 17th 2018, 11:42 |
neon1024 |
I guess you could cache the calculated user results |
# |
Jul 17th 2018, 11:41 |
neon1024 |
It works. Is it perfect? Not by half ;) |
# |
Jul 17th 2018, 11:41 |
neon1024 |
Meaning my request / response time was still snappy |
# |
Jul 17th 2018, 11:40 |
neon1024 |
Which is why I ended up with a shell, and I could “front-load” the data |
# |
Jul 17th 2018, 11:40 |
birdy247 |
I think we will see how big the problem is |
# |
Jul 17th 2018, 11:40 |
neon1024 |
Away from the user request is #1 |
# |
Jul 17th 2018, 11:40 |
neon1024 |
It’s expensive, it just a matter of choosing where you want to put the expense |
# |
Jul 17th 2018, 11:39 |
neon1024 |
Yep, and the aggregate table will be huge |
# |
Jul 17th 2018, 11:39 |
birdy247 |
If we have 10,000 books and 20,000 users, could be quite a cron! |
# |
Jul 17th 2018, 11:39 |
neon1024 |
Worked for me when I had to calculate bespoke pricing for every API consumer and every package |
# |
Jul 17th 2018, 11:38 |
neon1024 |
Or on a cron, or both |
# |
Jul 17th 2018, 11:38 |
neon1024 |
Perhaps either in a worker queue kicked off when the user logs in |
# |
Jul 17th 2018, 11:38 |
neon1024 |
Then I can update that aggregates table on a per-user basis |
# |
Jul 17th 2018, 11:38 |
neon1024 |
Then I’d have a shell which processes all the books for every user |
# |
Jul 17th 2018, 11:38 |
neon1024 |
If it’s really expensive I’d probably do an aggregate table |
# |
Jul 17th 2018, 11:37 |
neon1024 |
I think I’ve drunk too much tea and eaten too much pick and mix today :shocked_face_with_exploding_head: |
# |
Jul 17th 2018, 11:37 |
neon1024 |
(╯°□°)╯︵ ┻━┻ |
# |
Jul 17th 2018, 11:35 |
birdy247 |
The calc is non changeable |
# |
Jul 17th 2018, 11:35 |
neon1024 |
Simple as that ;) |
# |
Jul 17th 2018, 11:34 |
neon1024 |
Simplify the calculation and the problem goes away! |
# |
Jul 17th 2018, 11:34 |
neon1024 |
Ah, so the problem is in the calculation. |
# |
Jul 17th 2018, 11:33 |
birdy247 |
@neon1024 the use case the @matt is working on is as follows:.. We are bringing back a list of "books" against a set of criteria. Each book is then given a score depending on the logged in user. Its quite an involved calculation to generate the score |