← Cloudflare Cache / cache / advanced-configuration
Query String Sort
Query String Sort zvyšuje míru zásahů do mezipaměti (cache hit rate) tím, že před kontrolou mezipaměti Cloudflare nejprve seřadí parametry dotazu do konzistentního pořadí.
Mezipaměť Cloudflare ve výchozím nastavení považuje prostředky za odlišné, pokud se liší pořadí parametrů v jejich URL query stringu. Následující prostředky se tak ukládají do mezipaměti odděleně:
/video/48088296?title=0&byline=0&portrait=0&color=51a516/video/48088296?byline=0&color=51a516&portrait=0&title=0
Query String Sort changes this behavior. If two query strings exist with the same name, the URL is sorted by the parameter value. For example:
/example/file?word=alpha&word=beta a /example/file?word=beta&word=alpha
by se seřadily takto:
/example/file?word=alpha&word=beta
Dostupnost
| Free | Pro | Business | Enterprise | |
|---|---|---|---|---|
| Dostupnost | Ne | Ne | Ne | Ano |
Zapnutí Query String Sort
Chcete-li zapnout Query String Sort:
- Přihlaste se do Cloudflare dashboard ↗.
- Vyberte svůj účet a zónu.
- Přejděte na Ukládání do mezipaměti > Konfigurace.
- Pro Zapnutí Query String Sort, přepněte přepínač na On.
Neočekávané chování na administračních stránkách WordPress
Pokud web nebo aplikace vyžaduje přesné pořadí parametrů v query stringu, zapnutí Query String Sort může způsobit neočekávané chování.
Například v administračním rozhraní WordPress si můžete všimnout některého z následujících chování:
- V knihovně médií se nezobrazují žádná média
- Nemožnost přizpůsobit web pomocí Vzhled > Přizpůsobit
- Nemožnost přetáhnout jakýkoli widget do postranního panelu v Vzhled > Widgety
- Nemožnost upravovat nabídky v Vzhled > Nabídky
Důvodem je skutečnost, že WordPress spojuje soubory JavaScript ↗ za účelem zrychlení administračního rozhraní. Způsob, jakým to WordPress implementuje, zahrnuje více výskytů load[] parametrů v řetězci dotazu, kde je pořadí těchto parametrů klíčové.
Identifikace problému
Snímek obrazovky níže ukazuje příklad, kdy se zdroje v Media Library nevykreslují správně a ladicí konzole prohlížeče odhaluje, že stránka hlásí chybu:
Když stránka load-scripts.php načte, prohlížeč odešle Cloudflare požadavek na:
/wp-admin/load-scripts.php?c=0&load%5B%5D=hoverIntent,common,admin-bar,underscore,shortcode,backbone,wp-util,wp-backbone,media-models,wp-plupload,wp-mediaelement,wp-api-r&load%5B%5D=equest,media-views,media-editor,media-audiovideo,mce-view,imgareaselect,image-edit,media-grid,media,svg-painter&ver=5.0.3Po zapnutí Query String Sort Cloudflare seřadí parametry a hodnoty v query stringu požadavku, což vede k následujícímu výsledku:
/wp-admin/load-scripts.php?c=0&load%5B%5D=equest,media-views,media-editor,media-audiovideo,mce-view,imgareaselect,image-edit,media-grid,media,svg-painter&load%5B%5D=hoverIntent,common,admin-bar,underscore,shortcode,backbone,wp-util,wp-backbone,media-models,wp-plupload,wp-mediaelement,wp-api-r&ver=5.0.3Upozorňujeme, že load[] parametry byly prohozeny, jelikož equest by mělo předcházet hoverIntent při řazení v abecedním pořadí.
Když k tomu dojde, pravděpodobně uvidíte v konzoli prohlížeče chyby jako:
_____ is not defined at load-scripts.php?c=0&load[]=...
Tento typ chyby signalizuje, že Query String Sort neúmyslně narušuje funkčnost některých administračních stránek WordPressu.
Po seřazení dotaz putuje do cachovací infrastruktury Cloudflare (a případně na origin server, pokud daný prostředek není v mezipaměti Cloudflare nebo jej nelze ukládat do mezipaměti). Origin server poté vrátí spojené skripty seřazené jinak než původně. Protože skripty na sobě mohou záviset, tento proces může narušit jejich závislosti.
Reagujte na problém
Začněte analýzou chování vašeho webu nebo aplikace v souvislosti s používáním query strings. Existují prostředky, které se poskytují s více možnými uspořádáními query strings?
For example, you might have an image resizing endpoint or a search form, where the order of query parameters might vary - such as width, height, and version - yet a unique parameter combination points to a single relevant asset.
Abyste předešli problémům, zvažte:
- Zakázání Query String Sort pro web, pokud jste si jistí, že tato funkce nepřináší hodnotu žádné části vašeho webu. Cloudflare tuto možnost ve výchozím nastavení vypíná v Ukládání do mezipaměti aplikace.
- Pomocí Cache Rules povolte Query String Sort (nastavte Cache key > Seřadit query string:
On) pro adresy URL, u kterých nezáleží na zachování pořadí parametrů řetězce dotazu. - Případně pomocí Cache Rules zakažte Query String Sort pro URL, kde je vyžadováno konkrétní pořadí parametrů. Nastavte například Cache key > Seřadit query string:
Offpro cesty URI začínající na/wp-admin/load-scripts.php, nebo pro jakékoli adresy URL s podobnými požadavky.
Chcete-li se dozvědět více o Cache Rules, navštivte Cache Rules.