ВРЕМЕ ЗА ПРИЛОЖЕНИЕ НА НЯКОЯ БОЯ - Задоволителен град # 15

В момента работя за подобряване на разширяемостта на уебсайта ми.

Едно от нещата, по които работя, е автоматично да генерирам списък със страници за навигационната лента, страничната лента, индекса и т.н., вместо да го правя предимно ръчно, както правя в момента.

Смятам да използвам главен JSON файл, който съдържа списък със страници, заглавия, описания, URL адреси и т.н., и след това да анализирам този файл с PHP, когато страницата се зареди, за да се покаже списъкът със страници. Конкретният файлов формат и език, който се използва, не е приложим за този въпрос, той е тук само за контекст.

Очевидният проблем с това е ефективността - всяко зареждане на всяка страница ще включва четене на този JSON файл и генериране на HTML за списъка със страници.

Знам, че кеширането е обичайното решение за това, така че скриптът за генериране на страници се изпълнява само когато е необходимо, или базата данни може да кешира често срещани заявки, но какви са последиците от неизползването на решение за кеширане, различно от потенциално намалена производителност, риск от DoS и т.н.?

Не се използва ли стандартна практика за решение за кеширане и намалената ефективност просто се приема, или ми липсва нещо, когато става въпрос за това колко почти всеки уебсайт в света показва динамично съдържание?

  • Можете да кеширате заявки, използвайки обратното, използвайки nginx & apache.
  • mod_cache също е опция, предполагам.
  • Nginx с Apache out изпълнява повечето настройки.
  • Значи имате предвид Nginx отпред и Apache отзад?
  • Да, настройка, която смяташе за една, ако не и най-добрата за използване.

Очевидният проблем с това е ефективността - всяко зареждане на всяка страница ще включва четене на този JSON файл и генериране на HTML за списъка със страници.

Въпросът е доста неясен, но ако говорим за анализиране на статичен JSON файл за извеждане на HTML, освен ако изходният файл не е огромен, това трябва да е близо до "мигновено" - поне "незначително" в цялостния процес на получаване на пълна страница, с всички свързани ресурси, изобразени на потребителския агент.

В този случай, докато кеширането (визуализираният HTML) може да бъде по-бързо, дали това прави реална разлика е друг въпрос. (Самият акт на поддържане на този кеш не е без собствени разходи.)

какви са последиците от неизползването на решение за кеширане, освен потенциално намалена производителност, риск от DoS и т.н.?

Ако липсата на кеширане забавя сайта, тогава, както казвате ...

  • Повишено натоварване на сървъра
  • Не може да се справи с толкова много потребители
  • Разочаровани потребители
  • Пуснете SEO (ако вашият сайт е много бавен)

Споменавате „DoS“ ... макар и да, потенциално няма да можете да се справите с толкова много потребители. Но просто кеширането едва ли ще ви помогне срещу истинска DOS / DDOS атака.

Дали използването на решение за кеширане не е стандартна практика и понижената ефективност просто се приема, или ми липсва нещо, когато става въпрос за това колко почти всеки уебсайт в света показва динамично съдържание?

Кеширането приема много форми. Повечето сайтове ще използват кеширане на една или друга форма, дори и да не го осъзнават. Бих казал обаче кеширане е по-стандартно, отколкото не. Използвайте допълнително кеширане, ако имате нужда, не, ако ... не!

Но много сайтове, които зависят от кеширането, правят много повече от анализирането на статичен JSON файл.


Само мисъл, тъй като споменавате JSON ... не правете никаква обработка от страна на сървъра. Изпратете JSON на клиента и позволете на клиента да изгради HTML вместо това? (Да, това създава зависимост от JavaScript - но това може да се провери при първо зареждане и резервно копиране към сървърно изобразяване, ако е необходимо.)

  • 1 Благодаря ви за отговора, това много помогна. Вашата идея да направите всичко от страна на клиента е интересна, въпреки че една от целите на моя уебсайт е да бъде 100% безплатен JavaScript :) Предполагам, че за други проекти си струва да имате предвид. Както казвате, статичното кеширане на съдържанието вероятно е начинът, по който трябва да отидете, и просто приемете минималните режими при четенето на този JSON всеки път! Благодаря отново.
  • Само да добавя, ако използвате „кеш за статично съдържание“, не е задължително да „четете [целия] JSON всеки път“ - ако това е това, което намеквате - но зависи как изтича кешираното съдържание . Ако може да е просто случай на проверка / сравнение на "последно модифицирани" времеви марки?

е работил за вас: Charles Robertson | Искате ли да се свържете с нас?