>(a) Store all the items in an array rather than having to retrieve them from the DOM.
Now, that's interesting. If I have to push it more, I would probably store the object in the array as well.
>(b) Only call the server to obtain new items (rather than round tripping the whole page - which, I assume Michel is doing)
Yes, a server call is only done when a new item has to be added.
>(c) Only update the DOM for items where the elapsed time has changed ( which, given that Michel seems to be doing this every second, should be very few items)
This is done every 60 seconds. But, optimization could also be done around that because only related items would apply based on their time stamp. For example, if I an item has been there for more than an hour, then it should only be updated every hour and not being updated with the same value every 60 seconds. Then, the same would apply for an item which has a time stamp of two days for example. In that case, one update per day. That would then be another field in the array to indicate the type and it would be updated accordingly when we pass over an hour or a day.