Hi,
I’m sorry to hear you’re having performance issues with the plugin. I will say that it does run into issues for calendars that have a very large number of events, especially if they’re a lot of recurring events with no set end date.
The nature of an ICS feed is that there’s no way to only retrieve part of the feed. That’s the main reason that the plugin caches the feed data (for one hour by default).
The plugin does limit the scope of the data it parses to events that are within the designated date range, but recurring events definitely slow things down because they’re not passed in the feed as individual events, so the plugin (actually, the ics-parser library) has to do all of the date calculations as it’s parsing the feed.
In some cases, the source calendar has options to remove events outside of a certain date range from the feed. You may want to investigate whether there are any of those options in your source calendar software.
Beyond that, the Pro version has a couple of extra options: one to preload the feed using WP-Cron so it’s less likely to have to parse the feed on an actual page view, and another to let you set how long the cache is stored (i.e. storing it for a day instead of just an hour). Bear in mind that changing the cache duration also will delay the plugin picking up any changes to your calendar, such as newly added events.