مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

alibahman47

عضویت از 1395/11/13

علت مشکل سایت هایی مثل دیجی کالا و بامبیو و ... که دیشب اتفاق افتاد دقیقا چی هست ؟

  • جمعه 3 آذر 1396
  • 17:58
تشکر میکنم

درود ,

دقیقا پارسال همین حدودا دیجیتکالا همین مشکل رو داشت و یادمه از شب یلدا سه روز یه تخفیف فوق العاد زده بودن و با هجموم کاربرا سایت دچار مشکل جدید شد و حدود 15 ساعت قطع شد .

یادمه یه همچین مشکلی برای سایت لرن فایلز هم افتاد (جالبه که مدیران برنامه نویس این سایت ادعای بهترین بودن در ایران رو دارن).

امروز صبح سایت حدود 8 صبح هم تلگرام برنامه نویسان این مورد رو در حد یک پست ساده اطلاع رسانی کرد "

ولی بشخصه خیلی دوستم داشتم یه نقد کامل تر و با محتوا تر راجب این مشکل بشنوم و سایت برنمه نویسان حداقل یه پست کامل راجب موضوع بزاره .

بعد از اینکه دیجیتکالا پارسال دچار مشکل شد به کل سایت رو عوض کردن و یک سایت جدید رو ارایه داد ولی بازهم تکرار همون اتفاق نشون میده که راه حل اشتباهی رو رفتن.

حالا سوال اینجاست که علت این مشکل :

1 - الگو های طراحی های اشتباه و قدیمی بکار رفته در سایت هایی مثل دیجیتکالاس ؟

مثلا اینکه برای خرید ابتدا باید ثبت نام کرد و وارد سایت شد و بعد تکمیل سبد خرید به سنت قدیمی (در دیجیکالا با هر افزودن کالا به سبد خریدی ارتبات با دیتابیس برقرا میشود ) و همینطور مراحل طولانی خرید در دیجیت کالا که باید آدرس و مشخصات رو وارد کنی و ...(حتی برای کاربرایی که قبلا این اطلاعات رو کامل کردن و همین باعث ارتباط های بی دلیل و چند باره با سمت سروی میشود )و ...

من اینجا اگه این حرف رو میزنم براش دلیل دارم و چند ماه دارم روی طراحی یک فروشگاه با ایده های نویین کار میکنم و با طراحی سبدخرید با کوکی(با در نظر گرفتن نکات امنیتی موجود) و یکسری ایده های دیگه ارتباط با سمت سروی رو بسار پایین اوردم .

2 - یا مشکل از سرور و هاست و غیره میباشد (در این مورد بنده اطلاعات زیادی ندارم)؟

اگه جواب گزینه دوم باشه خیلی جالب میشه چون سایتی مثل ورزش 3 که طبق امار آلاسکا بیشترین بازدید رو در ایران داره همیوقت دچار یه همپین مشکلی نمیشه  ولی دیجیت کالا دچار مشکل میشه (اونم فقط تو چند ساعت افزایش بازدید) , پس شاید تفاوت در مشکل پیش اومده در دیجیت کالا این باشه که کاربرا تو سایت Login میکنن و ادامه مراحل سبد خرید و ... که بازهم جواب میشه گزینه اول.

امیدوارم تو چند روز آینده یه نقد کامل از مدیرای برنامه نویسان منتشر بشه و علت اینگونه مشکلاتی رو توضیح بدن .

پاسخ های این پرسش

تعداد پاسخ ها : 6 پاسخ
کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • جمعه 3 آذر 1396
  • 18:02

به زودی مقاله کاملی راجب این مسئله منتشر خواهیم کرد.

کاربر سایت

alibahman47

عضویت از 1395/11/13

  • جمعه 3 آذر 1396
  • 18:07

ممنون مهندس, بیصبرانه منتظرم.

کاربر سایت

aftabetoos

عضویت از 1394/01/29

  • شنبه 4 آذر 1396
  • 17:40

اگه در رابطه با مشکل لود شدن پروفایل دیگران هنگام لاگین کاربر دیگر- که دیجی کالا روز جمعه برای ساعتی این مشکل رو داشت - رو هم بگید ممنون میشم

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • سه شنبه 7 آذر 1396
  • 14:19

نکاتی در مورد بهبود عملکر وب سایت | سوالات مربوط به این مقاله را در همین تاپیک بیان کنید.

کاربر سایت

alibahman47

عضویت از 1395/11/13

  • سه شنبه 7 آذر 1396
  • 18:34

واقعا یکی از بهترین مقاله هایی (به زبان فارسی) بود که تا حالا خونده بودم , من دو بار کامل خوندمش , عالی بود.

واقعا ممنون بابت وقتی که گذاشتید و اطلاعات کاملی که نوشتید . امیدوارم هر چند وقت یک بار(حداقل یک یا دو ماه یک بار) یکی ازین مقاله رو رو در topdev منتشر کنید .

همون طور که خودتون هم انتظار داشتید حالا کلی سوال برام پیش اومده که همینجا میپرسم .

1 _ من هم تمام فایل های .css و .js رو که در  _Layout قرار داشتند رو  Bundle کردم و البته بصورت بخش بخش و جداگانه , آیا لازمه که همه این فایل رو بصورت یک Bundle دربیارم ؟

2 _ اما در مورد فایل های .css و .js که فقط در یک پیج خاص قرار میگیرند Bundle نکرده ام چون فقط یک یا دوفایا هستند و مختص همان صفحه هستند , بصورت زیر :

@section Scripts {
<script src="~/Scripts/Admin/jQuery.Form/jQuery.Form.4.2.2/jquery.form-4.2.2.min.js"></script>
}

آیا لازمه این تک فایل ها رو هم باندل کنم ؟

3 - در مورد WebMarkupMin.AspNet4.Mvc بعد نصب توی ReadeMe این رو نوشته بود :

   RELEASE NOTES
   =============
   1. Now, by default, only the `GET` requests are minified and compressed (this
      behavior can be changed by using the `SupportedHttpMethods` property);
   2. Fixed a error of filtering media-types, which led to incorrect usage of HTTP
      compression.

من قبلا خونده بودم که ارسال درخواست ها بصورت Post امنیت بالاتری داره و در ارسال ایجکسی و غیر ایجکسی تمام فورم ها به سمت سروی  HttpMethod = "Post" قرار دادم .

حالا چطور میتونم تنظیم WebMarkupMin رو روی Post بزارم ؟

4 - در مورد  Web.Config اطلاعاتی راجب این بخش ندارم  و برای من بصورت زیر :

 <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />

    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
    </handlers>
  </system.webServer>

منم از Identity استفاده میکنم _ بجز WindowsAuthentication که گفتید به دلیل استفاده از Identity نیازی نیست و remove کردید , بقیه موراد رو میتونید یه توضیح کوتاه بدید که بدونیم اگه برای من هم مهم نیستن remove کنم .

اگه وقت داشتید لطف کنید جواب بدید ممنون میشم .

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • چهارشنبه 8 آذر 1396
  • 11:54

فایل هایی که در تمامی صفحه های عمومی هستند را به همراه فایل هایی که دارای حداقل 30 خط دارن درون یک Bundle قرار بگیردند. برای مثال اگر در یک صفحه خاصی از دو فریم جاوااسکریپتی استفاده می کنید این دو فریم ورک را در bundle جداگانه قرار بدید.( هدف کم کردن درخواست ها است) بهتر است bundle کنید.

کد زیر در فایل global.asx و در متد ApplicationStart قرار بدید:

         WebMarkupMinConfiguration.Instance.DisablePoweredByHttpHeaders = true;
            WebMarkupMinConfiguration.Instance.AllowMinificationInDebugMode = true;
            WebMarkupMinConfiguration.Instance.AllowCompressionInDebugMode = true;
            HttpCompressionManager.Current.SupportedHttpMethods =
                new HashSet<string>()
                {
                    "GET",
                    "POST"
                };

همچنین میتوان در حال debug هم فشرده سازی را انجام دهید.

      <remove name="WindowsAuthentication" />
      <remove name="FormsAuthentication" />
      <remove name="PassportAuthentication" />
      <remove name="FileAuthorization" />
      <remove name="ErrorMail" />
      <remove name="DefaultAuthentication" />
      <remove name="UrlAuthorization" />

همین ها کفایت می می کند از نام آنها مشخص است که چه کاری را انجام می دهند. تنها ErrorMail برای elmah می باشد و بنده از سیستم ارسال ایمیل استفاده نمی کنم به همین علت آن را حذف کردم.

با استفاده از کد زیر میتوان لیست تمامی http module ها را مشاهده کنید:

           HttpApplication httpApps = HttpContext.Current.ApplicationInstance;
           HttpModuleCollection httpModuleCollections = httpApps.Modules;
           Response.Write("Total Number Active HttpModule : " + httpModuleCollections.Count.ToString() + "</br>");
           Response.Write("<b>List of Active Modules</b>" + "</br>");
           foreach (string activeModule in httpModuleCollections.AllKeys)
           {
              Response.Write(activeModule + "</br>");
           }

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)