diff --git a/source/blender/sequencer/intern/prefetch.cc b/source/blender/sequencer/intern/prefetch.cc
index 7305123c64032dd16c99e444cefcb575c95c3c75..d4aeb8912dbb431a246a6931bb1357775760016b 100644
--- a/source/blender/sequencer/intern/prefetch.cc
+++ b/source/blender/sequencer/intern/prefetch.cc
@@ -500,6 +500,10 @@ static void *seq_prefetch_frames(void *job)
     ListBase *channels = SEQ_channels_displayed_get(SEQ_editing_get(pfjob->scene_eval));
     if (seq_prefetch_must_skip_frame(pfjob, channels, seqbase)) {
       pfjob->num_frames_prefetched++;
+      /* Break instead of keep looping if the job should be terminated. */
+      if (!(pfjob->scene->ed->cache_flag & SEQ_CACHE_PREFETCH_ENABLE) || pfjob->stop) {
+        break;
+      }
       continue;
     }