Подтвердить что ты не робот

Не удалось очистить временное хранилище

Не удалось очистить хранилище temp: было определено, что некоторые файлы небезопасны для доступа в веб-приложении или слишком много вызовов выполняется в файловых ресурсах. SecurityError

Я получаю эту ошибку в консоли. У меня есть имя script script.js, которое делает вызовы ajax для извлечения данных с php.

Любая идея, почему?

Здесь мой jQuery script

$(document).ready(function() {

  var loading = false;
  var docHeight = $(window).height();

  $('.timeline').css({minHeight: docHeight});

  function get_tl_post() {

    if (loading==false) {

      loading = true;

      $.ajax({
        type:"POST",
        url:"timeline.php",
        data:"data=instagram",
        beforeSend:function(){
           $('.loader').fadeIn("slow");
        },
        complete:function(){
          loading = false;
          $('.loader').fadeOut("slow");
        },
        success:function(data) {
          if(data=="error")
          {
            get_tl_post();
          }
          $(data).hide().appendTo(".timeline").fadeIn(1000); 
        }
      });
    }
  }

  $(window).scroll(function(){
    if ($(window).scrollTop() == $(document).height() - $(window).height()) {
      get_tl_post();
    }
  });
});
4b9b3361

Ответ 1

Это связано с сетевым сопоставлением ваших ресурсов.

Другими словами, у вас может быть добавлена ​​папка рабочего пространства в ваших инструментах chrome dev. Теперь, когда вы пытаетесь внести изменения в некоторые файлы, он делает запрос к файловой системе. Это работает отлично на некоторое время. Однако в некоторых сценариях вы удаляете сетевое сопоставление.

Затем, когда вы пытаетесь открыть эту веб-страницу в браузере, она может потребовать или не потребовать переназначения сетевых ресурсов и по-прежнему пытаться обновить файловую систему. И это когда вы получите эту ошибку. В вашем script нет ничего плохого.

Теперь единственным решением для этого может быть удаление кеша, а затем перезапуск системы. Если проблема все еще сохраняется, вы можете просто установить хром, и это должно быть исправлено.

Кроме того, иногда сетевое сопоставление может также вызвать несколько других проблем. Например, чтобы размер файла CSS превысил 75 МБ или выше. Поэтому вы должны принимать меры предосторожности при игре с сетевым сопоставлением.

Необязательно, если вы находитесь на Mac... или даже на Windows и имеете sh доступных команд.

sudo find / -type f -size +50000k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'

Поразите это в своем Терминале, чтобы узнать индивидуальный файл виновника, который превышает 50 МБ. вы можете удалить их.

Примечание. Что делает вышеприведенная команда, он найдет все отдельные файлы размером более 50 МБ и напечатает их на вашем терминале один за другим.

Ответ 2

Если бы я предположил, что я бы сказал, что ваш timeline.php script всегда возвращает "ошибку", поэтому вы повторяете слишком много вызовов и браузер блокирует их.

Попробуйте устранить вызов рекурсивной функции и посмотрите, устранит ли это проблему.

Удалите следующие 3 строки и повторите попытку:

if (data == "error")
{
    get_tl_post();
}

Ответ 3

Если по какой-то причине ваш вызов ajax завершился неудачей, это может привести к слишком большому числу рекурсивных вызовов get_tl_post();.

Я предлагаю вам использовать свойство error для обработки ошибок и избежать ситуаций рекурсивного вызова вашей функции. Идея может заключаться в том, чтобы установить такую ​​политику, как "если запрос не выполнен/данные с ошибками, дождитесь количества времени, а затем повторите попытку. Если будут выполнены X-повторы, тогда выведите код ошибки и прекратите запрос".

Ниже приведен пример непроверенного кода, чтобы показать вам идею:

var attempts = 0;
$.ajax({
  //Rest of properties
  success: function(data) {

    if(data == "error") {
      if(attempts < 3) {
        setTimeout(function(){
          get_tl_post();
          ++attempts;
        }, 2000);
      } else {
        //output failure here.
      }

    }

    //Rest of code....
  }
});