پرش به محتوا

صفحه وب پویا

از ویکی‌پدیا، دانشنامهٔ آزاد
صفحه وب پویا: نمونه‌ای از اسکریپت‌نویسی سمت سرور (پی‌اچ‌پی و مای‌اس‌کیوال).

صفحه وب پویا گونه‌ای صفحه وب است که در زمان اجرا (هنگام اجرای نرم‌افزار) ساخته می‌شود، در برابر صفحه وب ایستا که همان‌گونه که ذخیره شده تحویل داده می‌شود.

صفحه وب پویای سمت سرور، صفحه‌ای است که ساختار آن توسط یک سرور کاربردی از طریق پردازش اسکریپت‌های سمت سرور کنترل می‌شود. در اسکریپت‌نویسی سمت سرور، پارامترها تعیین می‌کنند که چگونگی ساخت هر صفحه وب جدید پیش برود، از جمله راه‌اندازی پردازش‌های بیشتر در سمت کلاینت. صفحه وب پویای سمت کلاینت نیز صفحه‌ای است که با کمک جاوااسکریپت در مرورگر، هنگام بارگذاری پردازش می‌شود. جاوااسکریپت می‌تواند از طریق مدل شیءگرای سند (DOM) با صفحه تعامل داشته باشد تا وضعیت صفحه را بخواند و تغییر دهد.

مفهوم صفحه وب پویا در برابر صفحه وب ایستا قرار می‌گیرد؛ محتوای یک صفحه پویا بسته به اطلاعاتی چون زمان، نام کاربر، فرم‌های پر شده یا داده‌های دریافتی از سرور می‌تواند تغییر کند. فناوری‌هایی مانند ایجکس، اچ‌تی‌ام‌ال پویا و اسکریپت‌نویسی سمت سرور از پایه‌های اصلی تجربه پویا در وب به‌شمار می‌روند.

مفاهیم پایه

[ویرایش | اشتراک‌گذاری]

گشت‌وگذار کلاسیک ابرمتن با اچ‌تی‌ام‌ال یا اکس‌اچ‌تی‌ام‌ال به تنهایی، محتوای «ایستا» فراهم می‌کند؛ یعنی کاربر یک صفحه وب را درخواست می‌کند و صرفاً آن صفحه و اطلاعات موجود در آن را مشاهده می‌کند.[۱]

با این حال، یک صفحه وب می‌تواند تجربه‌ای «زنده»، «پویا» یا «تعاملی» نیز ارائه دهد. محتوا (متن، تصاویر، فیلدهای فرم و غیره) روی یک صفحه وب می‌تواند در پاسخ به زمینه‌ها یا شرایط مختلف تغییر کند.[۱]

دو روش برای ایجاد این نوع تأثیر وجود دارد:[۱]

  • بهره‌گیری از اسکریپت‌نویسی سمت کلاینت برای تغییر رفتارهای رابط کاربری درون یک صفحه وب خاص، در پاسخ به کنش‌های ماوس یا صفحه‌کلید، داده‌های دریافت‌شده از یک واسط برنامه‌نویسی وب، وب‌سوکت یا در رویدادهای زمان‌بندی مشخص. در این حالت رفتار پویا در لایه نمایش رخ می‌دهد.
  • بهره‌گیری از اسکریپت‌نویسی سمت سرور برای تغییر کد منبع صفحه ارائه‌شده میان صفحات، با تنظیم ترتیب یا بارگذاری مجدد صفحه‌های وب یا محتوای وب ارائه‌شده به مرورگر. پاسخ‌های سرور ممکن است توسط شرایطی مانند داده‌های ارسال‌شده در یک فرم HTML، پارامترهای موجود در URL، نوع مرورگر مورد بهره‌گیری، گذر زمان یا وضعیت پایگاه داده یا سرور تعیین شوند.

صفحات وبی که از اسکریپت‌نویسی سمت کلاینت بهره می‌گیرند باید از فناوری نمایشی موسوم به صفحات با رابط غنی استفاده کنند. زبان‌های اسکریپت‌نویسی سمت کلاینت مانند جاوااسکریپت یا اکشن‌اسکریپت، که به ترتیب برای فناوری‌های اچ‌تی‌ام‌ال پویا (DHTML) و فلش به کار می‌روند، اغلب برای هماهنگ‌سازی انواع رسانه (صدا، پویانمایی، متن متغیر و غیره) در نمایش مورد بهره‌گیری قرار می‌گیرند. اسکریپت‌نویسی همچنین امکان بهره‌گیری از اسکریپت‌نویسی از راه دور را فراهم می‌کند؛ روشی که در آن صفحه DHTML اطلاعات بیشتری از سرور درخواست می‌کند و از یک فریم پنهان، درخواست‌های XMLHttpRequest یا یک خدمت وب بهره می‌گیرد. همچنین می‌توان از یک چارچوب نرم‌افزاری تحت وب برای ایجاد یک واسط برنامه‌نویسی وب بهره گرفت که کلاینت از طریق جاوااسکریپت از آن برای دریافت داده و تغییر پویای ظاهر یا رفتار خود بسته به داده‌ها استفاده می‌کند.

صفحات وبی که از اسکریپت‌نویسی سمت سرور بهره می‌گیرند اغلب با کمک زبان‌های سمت سرور مانند پی‌اچ‌پی، پرل، ASP، JSP، ColdFusion و زبان‌های دیگر ساخته می‌شوند. این زبان‌های سمت سرور معمولاً از واسط دروازه مشترک (CGI) برای تولید صفحات وب پویا بهره می‌گیرند. این نوع صفحات همچنین می‌توانند در سمت کلاینت از نوع اول (DHTML و غیره) نیز استفاده کنند.

دشوار است که به‌طور دقیق از «آغازهای صفحه وب پویا» یا گاه‌شناسی سخن گفت، زیرا این مفهوم دقیق تنها پس از «توسعه گسترده صفحات وب» معنا می‌یابد. HTTP از سال ۱۹۸۹ وجود داشته‌است و HTML از سال ۱۹۹۶ به‌صورت رسمی استاندارد شده‌است. محبوبیت مرورگر وب با موزائیک در سال ۱۹۹۳ آغاز شد. میان سال‌های ۱۹۹۵ و ۱۹۹۶، چندین محصول وب پویا به بازار معرفی شدند، از جمله کلدفیوژن، WebObjects، پی‌اچ‌پی و Active Server Pages.[۲]

معرفی جاوااسکریپت (که در آن زمان LiveScript نامیده می‌شد) تولید صفحات وب پویای سمت کلاینت را ممکن ساخت و کد جاوااسکریپت در مرورگر کلاینت اجرا می‌شد.[۲] حرف «J» در واژه AJAX در اصل به بهره‌گیری از جاوااسکریپت و نیز XML اشاره داشت. با رشد پردازش جاوااسکریپت در سمت سرور، برای نمونه Node.js که در اصل در سال ۲۰۰۹ توسعه یافت، جاوااسکریپت همچنین برای ساخت پویای صفحات در سمت سرور که به‌صورت کامل برای کلاینت‌ها فرستاده می‌شوند نیز به کار می‌رود.[۲]

مدیاویکی، سامانه مدیریت محتوایی که ویکی‌پدیا را پشتیبانی می‌کند، نمونه‌ای از یک صفحه وب پویای اصالتاً سمت سرور است که از طریق ارسال فرم و پارامترهای URL با آن تعامل می‌شود. در طول زمان، افزونه‌هایی با بهبود پیش‌رونده مانند ویرایشگر بصری عناصری پویا در سمت کلاینت نیز افزوده‌اند، در حالی که عناصر پویای اصلی سمت سرور مانند فرم ویرایش کلاسیک برای تخریب ملایم در صورت بروز خطا یا ناسازگاری در دسترس باقی می‌مانند.

اسکریپت‌نویسی سمت سرور

[ویرایش | اشتراک‌گذاری]
There are four steps in the client-server ecosystem: the browser, the HTTP request, the web server, and the response. Server-side scripting occurs when a dynamic web page or resource is processed and generated by the web server.
هنگامی که درخواستی برای یک صفحه وب پویا یا منبع انجام می‌شود، سرور کاربردی درخواست را با بهره‌گیری از زبان سمت سرور خود پردازش می‌کند.

یک برنامه در حال اجرا روی یک سرور وب برای تولید محتوای وب در صفحات مختلف، مدیریت نشست‌های کاربری و کنترل گردش کار به کار می‌رود. پاسخ‌های سرور ممکن است توسط شرایطی مانند داده‌های ارسال‌شده در یک فرم HTML، پارامترهای موجود در URL، نوع مرورگر مورد بهره‌گیری، گذر زمان یا وضعیت پایگاه داده یا سرور تعیین شوند.[۳]

چنین صفحاتی اغلب با کمک زبان‌های سمت سرور مانند ASP، ColdFusion, Java، جاوااسکریپت، پرل، پی‌اچ‌پی، Ruby، Python و زبان‌های دیگر توسط یک سرور پشتیبان که می‌تواند روی همان سخت‌افزار سرور وب اجرا شود ساخته می‌شوند.[۳] این زبان‌های سمت سرور اغلب از واسط دروازه مشترک (CGI) برای تولید صفحات وب پویا بهره می‌گیرند. دو استثنای برجسته ASP.NET و JSP هستند که مفاهیم CGI را در APIهای خود دوباره بهره می‌گیرند اما در واقع همه درخواست‌های وب را به یک ماشین مجازی مشترک ارسال می‌کنند.[۳]

زبان‌های سمت سرور برای درج برچسب‌ها یا نشانگرها درون پرونده منبع صفحه وب روی سرور وب به کار می‌روند.[۳] هنگامی که یک کاربر روی رایانه کلاینت آن صفحه وب را درخواست می‌کند، سرور وب این برچسب‌ها یا نشانگرها را تفسیر می‌کند تا کنش‌هایی روی سرور انجام دهد. برای نمونه، ممکن است به سرور دستور داده شود که اطلاعاتی از پایگاه داده یا اطلاعاتی مانند تاریخ جاری را درج کند.[۳]

صفحات وب پویا اغلب هنگامی ذخیره موقت می‌شوند که تغییرات اندکی انتظار می‌رود و پیش‌بینی می‌شود صفحه ترافیک وب قابل توجهی دریافت کند که در صورت نیاز به تولید صفحه برای هر درخواست به‌صورت جداگانه، به‌اتلاف منابع سرور و کندی بارگذاری صفحه منجر می‌شد.[۳]

اسکریپت‌نویسی سمت کلاینت

[ویرایش | اشتراک‌گذاری]

اسکریپت‌نویسی سمت کلاینت عبارت است از تغییر رفتارهای رابط کاربری درون یک صفحه وب خاص در پاسخ به کنش‌های دستگاه ورودی، یا در رویدادهای زمان‌بندی مشخص. در این حالت رفتار پویا درون لایه نمایش رخ می‌دهد. محتوای سمت کلاینت روی سامانه رایانه‌ای محلی کاربر تولید می‌شود.[۴]

چنین صفحاتی از فناوری نمایشی موسوم به صفحات با رابط غنی بهره می‌گیرند. زبان‌های اسکریپت‌نویسی سمت کلاینت مانند جاوااسکریپت یا اکشن‌اسکریپت، که به ترتیب برای فناوری‌های اچ‌تی‌ام‌ال پویا (DHTML) و فلش به کار می‌روند، اغلب برای هماهنگ‌سازی انواع رسانه (صدا، پویانمایی، متن متغیر و غیره) در نمایش مورد بهره‌گیری قرار می‌گیرند.[۴] اسکریپت‌نویسی سمت کلاینت همچنین امکان بهره‌گیری از اسکریپت‌نویسی از راه دور را فراهم می‌کند؛ روشی که در آن صفحه DHTML اطلاعات بیشتری از سرور درخواست می‌کند و از یک فریم پنهان، درخواست‌های XMLHttpRequest یا یک خدمت وب بهره می‌گیرد.[۴]

نخستین بهره‌گیری عمومی از جاوااسکریپت در سال ۱۹۹۵ بود، زمانی که این زبان در نت‌اسکیپ ناوگیتور ۲ پیاده‌سازی شد و دو سال بعد به عنوان ECMAScript استاندارد گردید.[۵]

نمونه

محتوای سمت کلاینت روی رایانه کلاینت تولید می‌شود. مرورگر وب یک صفحه را از سرور دریافت می‌کند، سپس کد درج‌شده در صفحه (معمولاً نوشته‌شده به جاوااسکریپت) را پردازش کرده و محتوای صفحه بازیابی‌شده را به کاربر نمایش می‌دهد.[۶]

ویژگی innerHTML (یا دستور write) می‌تواند تولید پویای صفحه در سمت کلاینت را نشان دهد: دو صفحه متمایز الف و ب می‌توانند (به‌وسیله «پویایی پاسخ رویداد») به صورت document.innerHTML = A و document.innerHTML = B بازتولید شوند؛ یا «پویایی هنگام بارگذاری» با document.write(A) و document.write(B).[۶]

فناوری‌های ترکیبی

[ویرایش | اشتراک‌گذاری]

همه مؤلفه‌های کلاینت و سرور که به‌طور جمعی یک صفحه وب پویا می‌سازند، یک برنامه وب نامیده می‌شوند. برنامه‌های وب تعاملات کاربر، وضعیت، امنیت و کارایی را مدیریت می‌کنند.[۷]

ایجکس ترکیبی از هر دو اسکریپت‌نویسی سمت کلاینت و درخواست‌های سمت سرور را به کار می‌گیرد. این یک روش توسعه برنامه وب برای تبادل پویای محتوا است و برای این منظور درخواست‌هایی برای داده به سرور می‌فرستد. سرور داده‌های درخواست‌شده را بازمی‌گرداند که سپس توسط یک اسکریپت سمت کلاینت پردازش می‌شود.[۷] این روش می‌تواند بار سرور را کاهش دهد زیرا کلاینت درخواست بازتولید کل صفحه وب توسط تجزیه‌گر زبان سرور را نمی‌دهد؛ تنها محتوایی که تغییر خواهد کرد منتقل می‌شود. گوگل مپس نمونه‌ای از یک برنامه وب است که از فناوری‌های ایجکس بهره می‌گیرد.[۷]

یک کلاینت وب، مانند یک مرورگر وب، می‌تواند به عنوان سرور خود عمل کند و از سرورهای مختلفی مانند Gopher, FTP, NNTP (Usenet) و HTTP برای ساخت یک صفحه داده دریافت کند. HTTP از بارگذاری سند از کلاینت به سرور پشتیبانی می‌کند. چندین روش HTTP برای انجام این کار وجود دارد.[۷]

جستارهای وابسته

[ویرایش | اشتراک‌گذاری]
  1. 1 2 3 Nelson, Anne; Nelson, William H. M. (2002). Building Electronic Commerce with Web Database Constructions (in English). Addison Wesley. ISBN 978-0-201-74130-8.
  2. 1 2 3 Benson، Brent W. (۱۹۹۹). «JavaScript». ACM SIGPLAN Notices. ۳۴ (۴): ۲۵–۲۷. doi:10.1145/312009.312023. S2CID 10076062.{{cite journal}}: نگهداری یادکرد:تاریخ به‌طور خودکار ترجمه‌شده (رده).
  3. 1 2 3 4 5 6 Tatroe، Kevin (۲۰۱۳). Programming PHP: Creating Dynamic Web Pages (ویراست ۳). O'Reilly. شابک ۹۷۸-۱-۴۴۹۳-۶۵۸۳-۷.{{cite book}}: نگهداری یادکرد:تاریخ به‌طور خودکار ترجمه‌شده (رده)
  4. 1 2 3 Doyle، Barry؛ Lopes، Cristina Videira (۱۷ ژانویه ۲۰۰۸). «Survey of Technologies for Web Application Development». arXiv:0801.2618. {{cite journal}}: از پارامتر ناشناخته |class= صرف‌نظر شد (کمک); یادکرد journal نیازمند |journal= است (کمک)نگهداری یادکرد:تاریخ به‌طور خودکار ترجمه‌شده (رده)
  5. ↑ Okin, J. R. (2005). The Information Revolution: The Not-for-dummies Guide to the History, Technology, and Use of the World Wide Web (in English). Ironbound Press. ISBN 978-0-9763857-4-5.
  6. 1 2 «Learning VBScript", P. Lomax. شابک ‎۱−۵۶۵۹۲−۲۴۷−۶. Ed. O'Reilly, 1997. sec. C13.
  7. 1 2 3 4 «Web application». بایگانی‌شده از روی نسخهٔ اصلی در ۲۲ فوریه ۲۰۱۴. دریافت‌شده در ۲۴ ژوئیه ۲۰۱۳.{{cite web}}: نگهداری یادکرد:تاریخ به‌طور خودکار ترجمه‌شده (رده) نگهداری یادکرد:ربات:وضعیت نامعلوم پیوند اصلی (رده)

پیوند به بیرون

[ویرایش | اشتراک‌گذاری]