2016-09-27 7 views
3

Мой кэш файл манифеста выглядит следующим образом:сетка :: ERR_FAILED для сетевого элемента в manifest.cache

CACHE MANIFEST 

calendar.html 
scripts/jquery.js 
scripts/calendar.js 

NETWORK: 

https://apis.google.com/js/client.js 

Мой calendar.html выглядит что-то вроде:

<html manifest="calendar.cache"> 
    <head> 
    <script src="scripts/jquery.js" type="text/javascript"></script> 
    <script src="scripts/calendar.js" type="text/javascript"></script> 
    <script src='https://apis.google.com/js/client.js?onload=checkAuth'></script> 
    </head> 
    <body> 
    <div id="authorize-div" style="display: inline"> 
     <span>Authorize access to Google Calendar API</span> 
     <!--Button for the user to click to initiate auth sequence --> 
     <button id="authorize-button"> 
     Authorize 
     </button> 
    </div> 
    <pre id="output"></pre> 
    <script> 

    $(document).ready(function(){ 

     console.log("ready"); 
    }) 
    </script> 
    </body> 
</html> 

Если я отключить кэш все работает хорошо. Однако, когда кеш включен, я получаю сообщение об ошибке для файла apis.google.com/js/client.js. Ошибка: jquery.js:5 GET https://apis.google.com/js/client.js?onload=checkAuth&_=1474962265124 net::ERR_FAILED. Это для браузера Chrome Chrome, но я получаю аналогичную ошибку для firefox. Что мне не хватает?

ответ

2

Это вызвано теми параметрами, которые вы передаете для client.js, т.е. ?onload=checkAuth

В сети каждый раз, когда вы проходите какой-либо параметр, запрос считается unique.So насколько браузер соответствующие скрипты, объявленные в манифесте не то же самое

https://apis.google.com/js/client.js // script A 
https://apis.google.com/js/client.js?onload=checkAuth //script B ≠ script A 

Но в calendar.cache вы объявили только сценарий а, как non-cached.So теперь вы можете догадаться, изменение манифеста ниже будет решить вопрос

CACHE MANIFEST 
calendar.html 
scripts/jquery.js 
scripts/calendar.js 

NETWORK: 
https://apis.google.com/js/client.js?onload=checkAuth 

Ofc только удаление onload=checkAuth может также работать в-случае, если вы не нуждаетесь в callback.Just протирать ENTI re cache и перезагрузить, чтобы увидеть волшебство!