Knowledge (XXG)

Server-side scripting

Source 📝

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:.

Index

Dynamic web page
improve it
talk page
Learn how and when to remove these messages
WikiProject Technology

verification
improve this article
adding citations to reliable sources
"Server-side scripting"
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
Learn how and when to remove this message
web development
scripts
web server
client-side scripting
JavaScript
web browser
static web page
interface for the user
source code
web browser
HTTP
FTP
protocols

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.