Improved cache purge with model events