There are a few things you can do to improve the efficiency,
- Save the GeoJSON data to a (static) hosted file (e.g. inside the assets folder) so that you can pass it via the
url
property - Strip out any information that you don’t need (e.g. unused columns of data, etc.)
- Do the filtering client side rather than server side
Point 1 & 2 are general recommendations that will reduce the amount of data to be transferred the first time (+ enable browser caching), i.e. they will improve the speed of the initial load of the map.
Point 3 is the most important for your use case as it will eliminate the need to transfer data multiple times, i.e. after the map has loaded the first time data will not be transferred again. Hence subsequent changes in the filter will be fast.