Client Side vs Server Side Filtering – Which to Use?

apijavascriptweb-applicationsweb-development

So I am building a web-app. The app will be hosted on heroku and I using a MEAN Stack for development. The main purpose of the app is to allow users to search through data and be able to find a document they are looking for.

This is for my companies internal documents as most of our employees are all over the world and they need a way to find data easily.

The Idea:

The idea I have come up with is to create a web-app which provides them with a interface that allows them to search and filter data.

The filtering options provided on the web-app will be similar to that of eBay (see below)

enter image description here

The Data:

Initially the data set will be low. But with time it will grow quite big and I want it to be scalable to it can be used for a long time and not break or slow down as data increases.

Just a note that the data will mostly only be text. Any files such as pdf, excel or another formats will be saved on external resources like a central dropbox account and then the links for those files will be added to the web app.

The Question:

To provide the user the option to filter the data whats the best way?
When the user fill out the filtration form as the image attached above should the filtration be done on Server side and then sent to the client or should it be performed client side?

In my opinion server side is the best way to go because I can keep the whole logic of the system on the server and keep the client side code clean.

Also note that initially this will be a web-app but in future we will create a iPhone app for this as well.

Thanks in advance.

Best Answer

If the dataset was expected to stay small, it would probably be faster to filter client-side. But because of this:

Initially the data set will be low. But with time it will grow quite big and I want it to be scalable to it can be used for a long time and not break or slow down as data increases.

I would recommend server-side filtering. Otherwise, you will have to send the client the whole dataset in order for the client to filter it.