Към съдържанието

Настройки за бисквитки

Изберете кои видове бисквитки разрешавате. Можете да промените избора си по всяко време чрез „Настройки за бисквитки“ в долната част на всяка страница. Декларация за поверителност

Необходими

Винаги включени

Нужни са за вход, за запазване на количката и на Вашите избори. Те са винаги включени.

Кои бисквитки?
  • weboke_sessie, weboke_klant, weboke_remember: Вашата сесия и оставането в акаунта
  • weboke_basket: Вашата количка
  • wkBtwIncl: показване на цените с или без ДДС
  • wok_cookies: Вашият избор за бисквитките, 12 месеца

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

Кои бисквитки?
  • Google Ads чрез Google Tag Manager (_gcl_au, _gcl_aw), до 90 дни
  • OpenAI Ads, реклами в ChatGPT
  • wok_aff: кой партньор Ви е препратил към нас (партньорска програма), 60 дни

4,6

Държава и език

Всяка държава има собствен сайт, с цените и ДДС на тази държава.

Преглед

Скорост и кеширане при онлайн магазин

Модул 6: Управление и сигурност · Време за четене: 10 минути

Учебна цел: След този урок ще можете да настроите кеширането на WooCommerce онлайн магазин така, че магазинът да е бърз, а личните страници никога да не попадат в кеша, и ще можете да проверите това по HTTP заглавките.

Основни понятия: кеш на страници, изключения (количка, плащане, Моят профил), бисквитки, които заобикалят кеша, no-cache заглавки, DONOTCACHEPAGE, обектен кеш, Redis, фрагменти на количката, гео позициониране с кеш на страници, почистване на планираните действия

Два вида страници

Основите на кеширането (кеш на страници, кеш на браузъра, обектен кеш, OPcache, CDN) са описани в курса за WordPress, урок 6.2. Там е посочено и най-важното правило за онлайн магазините: личните страници не бива да попадат в кеша на страници. Този урок разглежда това по-подробно.

Един онлайн магазин има два вида страници:

ВидПримериКеш
Еднакви за всичкиначална страница, страница на магазина, категории, продуктови страници, информационни странициКеш на страници: да, тук е най-голямата полза
Различни за всеки посетителколичка, плащане, Моят профил, страницата за отказ от договора при влязъл в профила си клиентКеш на страници: никога

Ако нещо се обърка, ще го забележите веднага: клиент вижда количката на друг човек или, още по-лошо, нечий адрес на страницата за плащане. Това е и нарушение на сигурността на личните данни по смисъла на GDPR (KB 6749).

Какво прави самият WooCommerce

WooCommerce помага на кеша по три начина и е добре да ги познавате, за да забележите, когато нещо ги премахне:

  1. Константи. На страниците за количка, плащане и Моят профил WooCommerce задава DONOTCACHEPAGE (както и константи за обектния кеш и кеша на базата данни). Много плъгини за кеширане четат тази константа и в такъв случай пропускат страницата.
  2. Заглавки. На същите страници WooCommerce изпраща no-cache заглавките на WordPress: Cache-Control: no-cache, must-revalidate, max-age=0, private и Expires с дата в миналото. Прокси или CDN, които спазват правилата, тогава не запазват страницата. За влезли в профила си потребители се добавя и no-store.
  3. Бисквитки. Щом някой постави нещо в количката, WooCommerce задава бисквитки като woocommerce_items_in_cart, woocommerce_cart_hash и wp_woocommerce_session_.... Добрият кеш не дава запазена страница на посетители с такава бисквитка, дори за продуктовите страници, защото например количката в горната част на страницата тогава е различна за всеки посетител.

Документацията на WooCommerce посочва за плъгините за кеширане: изключете количката, Моят профил и плащането, както и бисквитките woocommerce_cart_hash, woocommerce_items_in_cart, wp_woocommerce_session_, woocommerce_recently_viewed и store_notice[...]. За Varnish тя дава и правила за адреси с ?add-to-cart=.

Къде се получават проблемите на практика

  • Други адреси за страниците на магазина. Преименували сте количката на /mandje/ или плъгин за превод създава /de/warenkorb/. Кеш, който изключва фиксирани адреси като /cart, ги пропуска. Плъгините за кеширане, които познават WooCommerce, четат страниците от настройките; кешът на сървъра или при CDN не прави това.
  • CDN, който кешира всичко. Някои CDN правила („cache everything“) пренебрегват заглавките. В такъв случай изрично изключете страниците на магазина и посочените бисквитки.
  • Плъгин, който презаписва заглавките. Плъгин за сигурност или за скорост понякога задава Cache-Control: public, max-age=... на всяка страница. Тогава no-cache заглавките вече ги няма.
  • Сесия за всеки посетител. Обикновено WooCommerce задава бисквитка за сесия едва когато в количката има нещо. Ако плъгин или тема започва сесия за всеки посетител (бисквитка wp_woocommerce_session_ или PHPSESSID още при първото посещение), кешът на страници отпада за всички и Вашият магазин става бавен при натоварване.
  • Гео позициониране. В WooCommerce > Настройки > Общи избирате местоположението на клиента по подразбиране. При обикновеното „Гео позициониране“ сървърът изчислява държавата за всеки посетител, а при цени по държави това не е съвместимо с кеш на страници. Затова WooCommerce предлага опцията „Гео позициониране (с поддръжка на кеширане на страници)“, която определя държавата чрез допълнителна заявка в браузъра. Ако не Ви трябват цени или ДДС по държави преди плащането, изберете държавата на магазина: това е най-простото. За гео позиционирането WooCommerce периодично изтегля база данни от MaxMind.

На сървър с LiteSpeed (както при WebOké) плъгинът LiteSpeed Cache сам управлява изключенията за WooCommerce; проверете ги в настройките за изключения. При други уеб сървъри и хостинг доставчици това работи по подобен начин с друг плъгин за кеширане.

Какво не решава кешът на страници

Количката и плащането винаги се изграждат от PHP и базата данни. При натоварване (промоция, бюлетин) това са точно страниците, на които Вашите клиенти харчат пари. Там помагат други неща:

  • Обектен кеш като Redis пази резултатите от заявките към базата данни в паметта. При онлайн магазин, с много страници, които не могат да бъдат в кеша на страници, това дава осезаемо повече полза, отколкото при обикновен сайт. Вашият хостинг трябва да предлага Redis (при WebOké това е възможно, DA 15.7); след това го включвате с плъгин.
  • Фрагменти на количката. Класическите теми обновяват количката в горната част на страницата чрез скрипт (wc-cart-fragments), който при пълна количка прави допълнителна заявка. Модерните блокови теми с блока за мини количка се нуждаят по-малко от това. Не зареждайте такива скриптове на страници, на които те не вършат нищо.
  • Почистени планирани действия. WooCommerce използва Action Scheduler за фонови задачи (урок 7.3). Завършените действия по подразбиране се почистват след един месец. Ако списъкът въпреки това нарасне до стотици хиляди, често заради разширение, което постоянно планира нещо, или заради неуспешни действия, заявките към базата данни стават по-бавни. Проверете в WooCommerce > Състояние > Планирани действия броя на неуспешните и чакащите действия.
  • HPOS. Поръчките в собствени таблици (урок 1.2) правят търсенето в поръчките по-бързо, отколкото в старата таблица с публикации. Съществуващите магазини трябва сами да преминат към тях (урок 6.2 за резервните копия предварително).
  • Актуална версия на PHP и достатъчно памет (урок 7.2).

На практика: ето как изглежда в WooCommerce

Проверете това при Чайна Example от Утрехт (Холандия) в поверителен прозорец с инструментите за разработчици на Вашия браузър (F12, раздел Мрежа, първата заявка):

  1. Начална страница, заредена два пъти: при второто зареждане заглавка като x-litespeed-cache: hit или cf-cache-status: HIT. Няма бисквитка wp_woocommerce_session_ при първото посещение.
  2. shop.example.com/winkelwagen/, заредена два пъти: няма hit, а cache-control съдържа no-cache или private.
  3. Същото за плащането и Моят профил.
  4. Поставете продукт в количката и заредете продуктова страница: виждате собствената си количка, а не запазена версия.

Обобщение

  • Страниците, които са еднакви за всички, се кешират; количката, плащането и Моят профил никога.
  • WooCommerce сам задава DONOTCACHEPAGE, no-cache заглавки и бисквитки; проверете дали нищо не ги премахва или пренебрегва.
  • Внимавайте за преименувани адреси, правила на CDN, плъгини, които презаписват заглавките, сесии за всеки посетител и гео позициониране.
  • Redis, почистените планирани действия, HPOS и подходяща версия на PHP помагат там, където кешът на страници не може.
  • Тествайте с двукратно зареждане в поверителен прозорец и прочетете заглавките.

Тест (quiz)

1. Клиент вижда в количката си продукти, които не е избирал. Коя е най-вероятната причина?



2. Каква заглавка очаквате на страницата за плащане на WooCommerce онлайн магазин?



3. Вашият магазин не показва цени по държави, но местоположението по подразбиране е „Гео позициониране“. Кое е едно просто подобрение за кеша?



4. Защо Redis помага повече при онлайн магазин, отколкото при обикновен информационен сайт?



Задача

Задача A6.4: Остават ли количката и плащането извън кеша? Въведете адреса на Вашия магазин и адресите на страниците за количка и плащане (и по желание на Моят профил). Програмата заявява началната страница два пъти с 2 секунди между заявките, без бисквитки, а след това и всяка страница на магазина също два пъти. Нищо не се поставя в количката и нищо не се поръчва. Зелено, ако при второто зареждане началната страница идва от кеша (или е видимо по-бърза), без да задава бисквитка за сесия, и ако всяка страница на магазина при второто зареждане няма попадение в кеша и изпраща Cache-Control с no-cache, no-store, private или max-age=0. Оранжево, ако началната страница не използва кеш или ако страница на магазина няма попадение, но няма и no-cache заглавка. Червено при попадение в кеша на количката, плащането или Моят профил, или ако началната страница започва WooCommerce сесия за всеки посетител.

Зелената отметка означава, че тази проверка в момента е наред, а не че Вашият магазин е сигурен.

Задача A6.4: Остават ли количката и плащането извън кеша?





Това, което въвеждате, и резултатите от проверката не се съхраняват. Браузърът Ви запомня отговорите и дали сте изпълнили задачата. Ако сте влезли, запазваме само дали задачата е била (почти) правилна в Моите курсове; и там можете да го изтриете.

Прочетете още

Стъпките в контролния панел се отнасят за WebOké; при други доставчици това работи по подобен начин.

Моля, изчакайте…

Настройте домейните си

За всеки домейн настройте сървърите за имена, връзката с хостинга и кой ще бъде собственикът.

Домейните Ви се зареждат…