468:. With server-side rendering, the page is generally assembled on the server once per each request. By contrast, with static site generation, the application generates all the static HTML pages at build time. These pre-built pages are then sent to the client at each request, without having to build them again. This leads to faster rendering times, since a new page doesn't have to be generated on every request; the server simply hands over a file it already generated in the past. The downside is that when some data on the page changes, it needs to be rebuilt. Examples of static site generation tools are
421:'s "Base HTTP Server" library, although some may not consider this to be server-side scripting. When using dynamic web-based scripting techniques, developers must have a keen understanding of the logical, temporal, and physical separation between the client and the server. For a user's action to trigger the execution of server-side code, for example, a developer working with classic ASP must explicitly cause the user's browser to make a request back to the webserver.
115:
73:
32:
291:, users may have their choice of a number of client programs (most modern web browsers can request and receive data using both of those protocols). In the case of more specialized applications, programmers may write their own server, client, and communications protocol, that can only be used with one another.
272:
that generates the interface, whereas, with client-side scripting, the user has access to all the code received by the client. A downside to the use of server-side scripting is that the client needs to make further requests over the network to the server in order to show new information to the user
405:
includes its own embedded database system. Either form of scripting (i.e., CGI or direct execution) can be used to build up complex multi-page sites, but direct execution usually results in less overhead because of the lower number of calls to external interpreters.
268:. These scripts may assemble client characteristics for use in customizing the response based on those characteristics, the user's requirements, access rights, etc. Server-side scripting also enables the website owner to hide the
437:, an updated approach to server-side scripting was introduced, known as server-side rendering. With server-side rendering, static HTML can be sent from the server to the client, and client-side JavaScript then makes the web page
244:
which produces a response customized for each user's (client's) request to the website. Scripts can be written in any of a number of server-side scripting languages that are available. Server-side scripting is distinguished from
424:
Server-side scripts are completely processed by the servers instead of clients. When clients request a page containing server-side scripts, the application server processes the scripts and returns an HTML page to the client.
326:
294:
Programs that run on a user's local computer without ever sending or receiving data over a network are not considered clients, and so the operations of such programs would not be considered client-side operations.
793:
277:. These requests can slow down the experience for the user, place more load on the server, and prevent the use of the application when the user is disconnected from the server.
944:
934:
701:
926:
830:
132:
45:
257:, but both techniques are often used together. The alternative to either or both types of scripting is for the web server itself to deliver a
981:
657:
334:
89:
216:
198:
179:
59:
151:
911:
1455:
896:
1110:
544:
158:
136:
1249:
611:
589:
418:
1567:
976:
823:
577:
165:
1130:
986:
966:
635:
554:
538:
442:
390:
281:
1312:
1006:
1001:
645:
583:
520:
458:
311:
51:
147:
125:
1529:
1299:
1212:
1106:
675:
526:
345:
In the earlier days of the web, server-side scripting was almost exclusively performed by using a combination of
891:
629:
358:
346:
1534:
1332:
816:
615:
454:
434:
1018:
856:
798:
623:
567:
330:
285:
1254:
1207:
906:
670:
619:
548:
465:
246:
1327:
1195:
1190:
1026:
716:
288:
1539:
1322:
1160:
949:
764:
502:
374:
318:
172:
1437:
1259:
1125:
939:
681:
532:
370:
237:
742:
1450:
1081:
514:
508:
473:
469:
1519:
1500:
1465:
1441:
1411:
1401:
996:
706:
686:
558:
438:
414:
378:
362:
20:
1524:
1495:
954:
788:
722:
258:
233:
1317:
1289:
1244:
265:
1561:
1546:
1507:
1485:
1372:
1274:
959:
783:
639:
280:
When the server serves data in a commonly used manner, for example, according to the
1445:
1101:
971:
354:
314:, first released in December, 1994 (soon after releasing JavaScript for browsers).
1342:
1279:
1151:
1097:
847:
274:
269:
254:
114:
1284:
1264:
1239:
1066:
1046:
563:
366:
307:
250:
241:
1307:
1269:
1061:
916:
496:
492:
There are a number of server-side scripting languages available, including:
410:
1490:
1347:
1115:
1076:
1071:
1051:
1041:
1036:
394:
303:
1460:
1406:
1222:
1202:
1120:
901:
839:
696:
691:
571:
477:
450:
446:
409:
Dynamic websites sometimes use custom web application servers, such as
398:
322:
476:. Sites generated by static site generation tools are often hosted on
1417:
1357:
1352:
1231:
1031:
884:
874:
869:
802:
651:
599:
481:
441:
by attaching event handlers to the HTML elements in a process called
402:
321:
while developing the first website for Boston, MA television station
1385:
1380:
1362:
1185:
1178:
1173:
1168:
879:
808:
1512:
991:
864:
595:
445:. Examples of frameworks that support server-side rendering are
382:
350:
812:
393:
either by the web server itself or via extension modules (e.g.
1337:
1056:
711:
605:
386:
108:
66:
25:
264:
Server-side scripting is often used to provide a customized
369:. Many modern web servers can directly execute on-line
317:
Server-side scripting was later used in early 1995 by
329:. The patent was issued in 1998 and is now owned by
1478:
1430:
1394:
1371:
1298:
1230:
1221:
1159:
1150:
1090:
1017:
925:
855:
846:
139:. Unsourced material may be challenged and removed.
824:
8:
765:"Using Netscape™ LiveWire™, Special Edition"
82:needs attention from an expert in technology
745:. Netscape Communications Corporation. 1998
464:An alternative to server-side rendering is
60:Learn how and when to remove these messages
1227:
1156:
852:
831:
817:
809:
365:, and the results were served back by the
361:(CGI). Those scripts were executed by the
86:unfocused, scattered, unnecessary details.
702:Outline of web design and web development
333:(OIN). In 2010 OIN named Fred DuFresne a
217:Learn how and when to remove this message
199:Learn how and when to remove this message
792:) is being considered for deletion. See
19:For broader coverage of this topic, see
734:
337:for his work on server-side scripting.
92:may be able to help recruit an expert.
7:
137:adding citations to reliable sources
14:
796:to help reach a consensus. ›
401:) to the webserver. For example,
325:. The technology is described in
41:This article has multiple issues.
16:Technique used in web development
608:(*.php, *.php3, *.php4, *.phtml)
306:introduced an implementation of
249:where embedded scripts, such as
113:
71:
30:
310:for server-side scripting with
124:needs additional citations for
49:or discuss these issues on the
743:"Server-Side JavaScript Guide"
1:
602:module (*.cgi, *.ipl, *.pl)
253:, are run client-side in a
84:. The specific problem is:
1584:
521:ColdFusion Markup Language
312:Netscape Enterprise Server
18:
676:Content management system
570:(*.ssjs, *.js) (example:
236:which involves employing
794:templates for discussion
638:(*.rb, *.rbw) (example:
435:single-page applications
359:Common Gateway Interface
335:"Distinguished Inventor"
232:is a technique used in
148:"Server-side scripting"
568:Server-side JavaScript
466:static site generation
331:Open Invention Network
266:interface for the user
90:WikiProject Technology
799:Server-side scripting
671:Client-side scripting
429:Server-side rendering
247:client-side scripting
230:Server-side scripting
763:Mike Morgan (1996).
717:Server Side Includes
517:(*.cshtml, *.vbhtml)
133:improve this article
1568:Scripting languages
433:With the advent of
371:scripting languages
1126:Application server
682:Edge Side Includes
614:(*.py) (examples:
557:(*.jsp, *.do) via
533:Google Apps Script
1555:
1554:
1474:
1473:
1451:Browser extension
1426:
1425:
1146:
1145:
1082:Phusion Passenger
658:Progress WebSpeed
586:(*.lp *.op *.lua)
547:(*.hs) (example:
515:ASP.NET Web Pages
509:ASP.NET Web Forms
327:US patent 5835712
227:
226:
219:
209:
208:
201:
183:
107:
106:
64:
1575:
1520:Web API security
1442:Remote scripting
1412:Web SQL Database
1228:
1157:
853:
833:
826:
819:
810:
769:
768:
760:
754:
753:
751:
750:
739:
559:JavaServer Pages
363:operating system
222:
215:
204:
197:
193:
190:
184:
182:
141:
117:
109:
102:
99:
93:
75:
74:
67:
56:
34:
33:
26:
21:Dynamic web page
1583:
1582:
1578:
1577:
1576:
1574:
1573:
1572:
1558:
1557:
1556:
1551:
1525:Web application
1470:
1422:
1390:
1367:
1294:
1217:
1142:
1086:
1013:
992:JavaScript JSGI
972:ASP.NET Handler
955:Jakarta Servlet
921:
842:
837:
797:
778:
773:
772:
762:
761:
757:
748:
746:
741:
740:
736:
731:
723:Web development
667:
490:
431:
343:
301:
259:static web page
234:web development
223:
212:
211:
210:
205:
194:
188:
185:
142:
140:
130:
118:
103:
97:
94:
88:
76:
72:
35:
31:
24:
17:
12:
11:
5:
1581:
1579:
1571:
1570:
1560:
1559:
1553:
1552:
1550:
1549:
1544:
1543:
1542:
1537:
1532:
1522:
1517:
1516:
1515:
1505:
1504:
1503:
1498:
1488:
1482:
1480:
1476:
1475:
1472:
1471:
1469:
1468:
1463:
1458:
1453:
1448:
1434:
1432:
1428:
1427:
1424:
1423:
1421:
1420:
1415:
1414:(formerly W3C)
1409:
1404:
1398:
1396:
1392:
1391:
1389:
1388:
1383:
1377:
1375:
1369:
1368:
1366:
1365:
1360:
1355:
1350:
1345:
1340:
1335:
1330:
1325:
1320:
1315:
1310:
1304:
1302:
1296:
1295:
1293:
1292:
1290:XMLHttpRequest
1287:
1282:
1277:
1272:
1267:
1262:
1257:
1252:
1247:
1242:
1236:
1234:
1225:
1219:
1218:
1216:
1215:
1210:
1205:
1200:
1199:
1198:
1188:
1183:
1182:
1181:
1176:
1165:
1163:
1154:
1148:
1147:
1144:
1143:
1141:
1140:
1135:
1134:
1133:
1123:
1118:
1113:
1104:
1094:
1092:
1088:
1087:
1085:
1084:
1079:
1074:
1069:
1064:
1059:
1054:
1049:
1044:
1039:
1034:
1029:
1023:
1021:
1019:Apache modules
1015:
1014:
1012:
1011:
1010:
1009:
999:
994:
989:
984:
979:
974:
969:
964:
963:
962:
952:
947:
942:
937:
931:
929:
923:
922:
920:
919:
914:
909:
904:
899:
894:
889:
888:
887:
882:
877:
872:
861:
859:
850:
844:
843:
840:Web interfaces
838:
836:
835:
828:
821:
813:
807:
806:
781:
777:
776:External links
774:
771:
770:
755:
733:
732:
730:
727:
726:
725:
720:
714:
709:
704:
699:
694:
689:
684:
679:
673:
666:
663:
662:
661:
655:
649:
643:
633:
627:
609:
603:
593:
587:
581:
575:
561:
552:
542:
536:
530:
524:
518:
512:
506:
500:
489:
486:
430:
427:
342:
339:
300:
297:
225:
224:
207:
206:
121:
119:
112:
105:
104:
79:
77:
70:
65:
39:
38:
36:
29:
15:
13:
10:
9:
6:
4:
3:
2:
1580:
1569:
1566:
1565:
1563:
1548:
1547:Web framework
1545:
1541:
1538:
1536:
1533:
1531:
1528:
1527:
1526:
1523:
1521:
1518:
1514:
1511:
1510:
1509:
1508:Web standards
1506:
1502:
1499:
1497:
1494:
1493:
1492:
1489:
1487:
1486:Microservices
1484:
1483:
1481:
1477:
1467:
1464:
1462:
1459:
1457:
1454:
1452:
1449:
1447:
1443:
1439:
1436:
1435:
1433:
1429:
1419:
1416:
1413:
1410:
1408:
1405:
1403:
1400:
1399:
1397:
1393:
1387:
1384:
1382:
1379:
1378:
1376:
1374:
1370:
1364:
1361:
1359:
1356:
1354:
1351:
1349:
1346:
1344:
1341:
1339:
1336:
1334:
1331:
1329:
1326:
1324:
1321:
1319:
1316:
1314:
1311:
1309:
1306:
1305:
1303:
1301:
1297:
1291:
1288:
1286:
1283:
1281:
1278:
1276:
1275:Web messaging
1273:
1271:
1268:
1266:
1263:
1261:
1258:
1256:
1253:
1251:
1248:
1246:
1243:
1241:
1238:
1237:
1235:
1233:
1229:
1226:
1224:
1220:
1214:
1211:
1209:
1206:
1204:
1201:
1197:
1194:
1193:
1192:
1189:
1187:
1184:
1180:
1177:
1175:
1172:
1171:
1170:
1167:
1166:
1164:
1162:
1158:
1155:
1153:
1149:
1139:
1136:
1132:
1129:
1128:
1127:
1124:
1122:
1119:
1117:
1114:
1112:
1108:
1105:
1103:
1099:
1096:
1095:
1093:
1089:
1083:
1080:
1078:
1075:
1073:
1070:
1068:
1065:
1063:
1060:
1058:
1055:
1053:
1050:
1048:
1045:
1043:
1040:
1038:
1035:
1033:
1030:
1028:
1025:
1024:
1022:
1020:
1016:
1008:
1005:
1004:
1003:
1000:
998:
995:
993:
990:
988:
985:
983:
980:
978:
975:
973:
970:
968:
965:
961:
958:
957:
956:
953:
951:
948:
946:
943:
941:
938:
936:
933:
932:
930:
928:
924:
918:
915:
913:
910:
908:
905:
903:
900:
898:
895:
893:
890:
886:
883:
881:
878:
876:
873:
871:
868:
867:
866:
863:
862:
860:
858:
854:
851:
849:
845:
841:
834:
829:
827:
822:
820:
815:
814:
811:
804:
800:
795:
791:
790:
785:
780:
779:
775:
766:
759:
756:
744:
738:
735:
728:
724:
721:
718:
715:
713:
710:
708:
705:
703:
700:
698:
695:
693:
690:
688:
685:
683:
680:
677:
674:
672:
669:
668:
664:
659:
656:
654:(*.dna,*.tpl)
653:
650:
647:
644:
641:
640:Ruby on Rails
637:
634:
631:
628:
625:
621:
617:
613:
610:
607:
604:
601:
597:
594:
591:
588:
585:
582:
579:
576:
573:
569:
565:
562:
560:
556:
553:
550:
546:
543:
540:
537:
534:
531:
528:
525:
522:
519:
516:
513:
510:
507:
504:
501:
498:
495:
494:
493:
487:
485:
483:
479:
475:
471:
467:
462:
460:
456:
452:
448:
444:
440:
436:
428:
426:
422:
420:
416:
412:
407:
404:
400:
396:
392:
388:
384:
380:
376:
372:
368:
364:
360:
356:
355:shell scripts
353:scripts, and
352:
348:
340:
338:
336:
332:
328:
324:
320:
319:Fred Dufresne
315:
313:
309:
305:
298:
296:
292:
290:
287:
283:
278:
276:
271:
267:
262:
260:
256:
252:
248:
243:
239:
235:
231:
221:
218:
203:
200:
192:
181:
178:
174:
171:
167:
164:
160:
157:
153:
150: –
149:
145:
144:Find sources:
138:
134:
128:
127:
122:This article
120:
116:
111:
110:
101:
91:
87:
83:
80:This article
78:
69:
68:
63:
61:
54:
53:
48:
47:
42:
37:
28:
27:
22:
1161:Browser APIs
1137:
1102:Web resource
787:
758:
747:. Retrieved
737:
491:
463:
432:
423:
408:
344:
316:
302:
293:
279:
263:
229:
228:
213:
195:
189:October 2008
186:
176:
169:
162:
155:
143:
131:Please help
126:verification
123:
95:
85:
81:
57:
50:
44:
43:Please help
40:
1540:Progressive
1535:Single-page
1343:WebAssembly
1323:Geolocation
1280:Web storage
1186:C NPRuntime
1174:LiveConnect
1152:Client-side
1098:Web service
1027:mod_include
982:Python ASGI
977:Python WSGI
927:Server APIs
848:Server-side
782:‹ The
341:Explanation
275:web browser
270:source code
255:web browser
1308:DOM events
1285:Web worker
1270:WebSockets
1131:comparison
1067:mod_python
1047:mod_parrot
880:Encryption
749:2012-04-25
729:References
707:Perl/Plack
564:JavaScript
367:web server
357:using the
349:programs,
308:JavaScript
251:JavaScript
242:web server
159:newspapers
98:April 2012
46:improve it
1466:Scripting
1328:IndexedDB
1179:XPConnect
1138:Scripting
1062:mod_proxy
1007:container
997:Perl PSGI
987:Ruby Rack
960:container
917:WebSocket
857:Protocols
660:(*.r,*.w)
632:(*.rhtml)
580:(*.lasso)
497:ActiveVFP
488:Languages
443:hydration
411:Glassfish
289:protocols
52:talk page
1562:Category
1491:Web page
1348:WebAuthn
1223:Web APIs
1116:Open API
1077:mod_ruby
1072:mod_wsgi
1052:mod_perl
1042:mod_mono
1037:mod_lisp
967:CLI OWIN
784:template
665:See also
598:via the
511:(*.aspx)
499:(*.avfp)
395:mod_perl
373:such as
304:Netscape
273:via the
1501:Dynamic
1461:Web IDL
1407:GraphQL
1373:Khronos
1203:ActiveX
1191:C PPAPI
1169:C NPAPI
1121:Webhook
1057:mod_php
1002:Portlet
950:COM ASP
945:C ISAPI
940:C ASAPI
935:C NSAPI
786:below (
697:Next.js
692:Node.js
648:(*.tcl)
616:Pyramid
572:Node.js
545:Haskell
541:(*.php)
523:(*.cfm)
505:(*.asp)
484:pages.
478:Netlify
455:Angular
451:Nuxt.js
447:Next.js
439:dynamic
399:mod_php
299:History
238:scripts
173:scholar
1496:Static
1479:Topics
1456:Mashup
1431:Topics
1418:WebUSB
1395:Others
1358:WebRTC
1353:WebGPU
1245:Canvas
1232:WHATWG
1091:Topics
1032:mod_jk
885:WebDAV
803:Curlie
789:Curlie
767:. Que.
652:WebDNA
624:Django
612:Python
600:CGI.pm
590:Parser
566:using
535:(*.gs)
529:(*.go)
482:GitHub
474:Gatsby
470:Jekyll
457:, and
419:Python
403:WebDNA
175:
168:
161:
154:
146:
1446:DHTML
1402:Gears
1386:WebGL
1381:WebCL
1363:WebXR
1265:Video
1240:Audio
719:(SSI)
678:(CMS)
620:Flask
592:(*.p)
578:Lasso
549:Yesod
459:React
415:Plack
240:on a
180:JSTOR
166:books
1530:Rich
1513:REST
1444:vs.
1440:and
1438:Ajax
1318:File
1250:CORS
1213:XBAP
1196:NaCl
1109:vs.
1100:vs.
912:WSRP
902:FCGI
897:SCGI
865:HTTP
636:Ruby
596:Perl
555:Java
539:Hack
472:and
417:and
391:Ruby
389:and
383:Perl
351:Perl
323:WCVB
282:HTTP
152:news
1338:SVG
1333:MSE
1313:EME
1300:W3C
1260:SSE
1255:DOM
1208:BHO
1111:ROA
1107:WOA
907:AJP
892:CGI
801:at
712:PHP
687:JSP
646:Tcl
606:PHP
584:Lua
503:ASP
480:or
397:or
387:PHP
379:JSP
375:ASP
286:FTP
284:or
261:.
135:by
1564::
875:v3
870:v2
622:,
618:,
527:Go
461:.
453:,
449:,
413:,
385:,
381:,
377:,
55:.
832:e
825:t
818:v
805:;
752:.
642:)
630:R
626:)
574:)
551:)
347:C
220:)
214:(
202:)
196:(
191:)
187:(
177:·
170:·
163:·
156:·
129:.
100:)
96:(
62:)
58:(
23:.
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.