No matter what source of suggestion you use, you can always cache responses so that the client won't need to reach the server in case user repeats the search.

In this demo, you will perceive a 1 sec. delay for first request. But if you repeat the same search, you will get immediate answer.

One need to provide cached flag and setup minLength which declares how long the user input needs to be to reach server.

It is also possible to pass custom caching provider using cacheImplemenation option. Default implementation is $.ui.autocomplete.objectCache.