The only bright spot of the game was the performance of goalkeeper Gabriel, who kept the scoreline down with a series of saves.
Without the players on international duty, coach Max Allegri had six of his first-team players available, but it was still a terrible performance against a French second division side.
This was a homecoming for Mbaye Niang, who joined Milan from Caen, while Riccardo Saponara and Jherson Vergara were able to play after long injury layoffs.
It took just three minutes for Caen to break the deadlock with Appiah tapping in from a parried free kick.
The Rossoneri defence was disastrous throughout and Duhamel sprung the offside trap to beat Gabriel one-on-one.
Koita was also on his own against goalkeeper Gabriel after bursting down the right undisturbed.
Caen 3-0 Milan
Scorers: Appiah 3, Duhamel 17, Koita 55
Milan: Gabriel; Rondanini (Pacifico 76), Zaccardo, Mexes (Vergara 46), Constant; Mastalli (Di Molfetta 60), Nocerino, Emanuelson; Saponara (Cerigoi 82), Niang, Matri (Claveria 70)
Read the original article on Football Italia - The ultimate website for English-speaking fans of Italian football