Рабочие Cloudflare: запретить 302 (из кеша диска) для URL с параметром

У меня есть рабочий, я хочу обойти кеш, когда URL-адрес имеет определенный параметр следующим образом:

      let wcApiParam = url.searchParams.get('wc-api');

      //bypass cache if wc-api param is in the URL
      if( wcApiParam != 'auth'  ){
        //force cache
        response = await fetch( newRequest, { cf: { cacheTtl: 43200 } } );
      } else {
          //bypass cache
          response = await fetch( newRequest, { cf: { cacheTtl: 0 } } );
      }

Я не уверен, что я делаю не так, ответ на запрос всегда 302 (from disk cache), это вызывает ошибки на моем сайте, потому что мне нужно избегать кеширования этих запросов. Что может быть не так с моим рабочим? а может что-то не так в настройках моего кеша?

ниже полный ответ:

Запросить ответ


person svelandiag    schedule 24.09.2020    source источник


Ответы (1)


Похоже, проблема в том, что ответ был кэширован в кеше вашего браузера. На самом деле запрос вообще не попадает в Cloudflare (и, следовательно, ваш Worker не выполняется).

Браузер кэшировал ответ, потому что он содержит Cache-Control: max-age=14400. Это говорит браузеру, что он может кэшировать ответ на 4 часа. Вам следует либо прекратить отправку этого заголовка из вашего источника, либо ваш рабочий скрипт может удалить заголовок из ответов, которые не должны кэшироваться в браузере, например:

let response = await fetch(...);

// Copy the response so that headers can be modified.
response = new Response(response);

// Remove cache-control header.
response.headers.delete("Cache-Control");
person Kenton Varda    schedule 29.09.2020
comment
Спасибо за ответ, похоже, что Cache-Control: max-age=14400 установлен Cloudflare из-за моих настроек кеша TTL, не знаю, какая конфигурация должна быть правильной. Мне все еще нужен кеш, но мне нужно пропустить кеш только для URL-адресов с этим параметром. - person svelandiag; 30.09.2020
comment
Не могли бы вы привести мне пример, как это сделать? "or you could have your Worker script remove the header from responses that shouldn't be cached in the browser" - person svelandiag; 30.09.2020
comment
Работал как шарм. Большое спасибо. - person svelandiag; 01.10.2020