Sorry to be controversial but ignoring isn't quite universal, listening could be an option.
If a biscuit's asked for, don't "in a minute", deal with it there and then. If the answer's "no", explain that it'll spoil his tea/it'll rot his teeth/he's had enough/these are special grown-up biscuits/whatever...
"No" is a valid answer and something he'll have to get used to. Give it a try, little folk can deal with reasons for "no" if they're offered.
IMHO the key thing is consistency both in your reaction, don't do one thing one day and another the next, and delivery, how you say it. Also, never never never never never let a "no" become "yes" after whining or crying. If you want to avoid pinning yourself in a corner and leave the opportunity for flexibility try an "I'd prefer not".
Whilst developed behaviours are going to take a fair old time to shift if you can pretty much predict what'll precipitate a meltdown, perhaps try to preempt it and prevent it happening by listening to the little chap immediately before he kicks off. If it does start, prehaps get down to his level and ask him to explain why he's sad or cross.
Why does it happen at home and not at school though? Sorry to be brutal but it could be because patterns have developed where it's been demonstrated to be allowed to happen at home and not at school, i.e. crying at school has no effect whatsoever.
Having said all that, matters could be exacerbated by the levels of testosterone careering around the little chap right now: isn't 4-5 pretty much critical mass time?
Good luck with your efforts