INTEGRITY Dokumentace

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ě:

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:

  1. Přihlaste se do Cloudflare dashboard.
  2. Vyberte svůj účet a zónu.
  3. Přejděte na Ukládání do mezipaměti > Konfigurace.
  4. 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í:

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:

Prostředky v Media Library se nezobrazují správně

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.3

Po 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.3

Upozorň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:

Chcete-li se dozvědět více o Cache Rules, navštivte Cache Rules.