Client-side logic OR Server-side logic?

Viewed 22593

I've done some web-based projects, and most of the difficulties I've met with (questions, confusions) could be figured out with help. But I still have an important question, even after asking some experienced developers: When functionality can be implemented with both server-side code and client-side scripting (JavaScript), which one should be preferred?

A simple example:

To render a dynamic html page, I can format the page in server-side code (PHP, python) and use Ajax to fetch the formatted page and render it directly (more logic on server-side, less on client-side).

I can also use Ajax to fetch the data (not formatted, JSON) and use client-side scripting to format the page and render it with more processing (the server gets the data from a DB or other source, and returns it to the client with JSON or XML. More logic on client-side and less on server).

So how can I decide which one is better? Which one offers better performance? Why? Which one is more user-friendly?

With browsers' JS engines evolving, JS can be interpreted in less time, so should I prefer client-side scripting?

On the other hand, with hardware evolving, server performance is growing and the cost of sever-side logic will decrease, so should I prefer server-side scripting?

EDIT:

With the answers, I want to give a brief summary.

Pros of client-side logic:

  1. Better user experience (faster).
  2. Less network bandwidth (lower cost).
  3. Increased scalability (reduced server load).

Pros of server-side logic:

  1. Security issues.
  2. Better availability and accessibility (mobile devices and old browsers).
  3. Better SEO.
  4. Easily expandable (can add more servers, but can't make the browser faster).

It seems that we need to balance these two approaches when facing a specific scenario. But how? What's the best practice?

I will use client-side logic except in the following conditions:

  1. Security critical.
  2. Special groups (JavaScript disabled, mobile devices, and others).
12 Answers

2018 answer, with the existence of Node.js

Since Node.js allows you to deploy Javascript logic on the server, you can now re-use the validation on both server and client side.

Make sure you setup or restructure the data so that you can re-use the validation without changing any code.

Related