2015-04-23 2 views
0

Я развернул приложение angularjs в движке Google, но есть некоторые проблемы в каталоге js, css, bower components and components. javascript и css не работают в Google App Engine. Вот моя структура каталога приложений.Статические активы, не работающие с движком google app

myapp 
    app 
    bower_components 
     angular-bootstrap 
     ..........etc 
    components 
     version.js 
    css 
     app.css 
    js 
     app.js 
     controllers.js 
     services.js 
     filters.js 
     directives.js 
    index.html 
    app.yaml 

вот мой app.yaml содержимое файла:

application: myappid 
version: 1 
runtime: python27 
threadsafe: true 
api_version: 1 

handlers: 

url: css 
static_dir: app/css 
mime_type: text/css 

url: js 
static_dir: app/js 
mime_type: text/javascript 

url: /components 
static_files: components 
upload: components 
mime_type: text/javascript 

url: /bower_components 
static_files: /bower_components 

upload: /bower_components 
mime_type: text/javascript 

url: (.*)/.* 
static_files: app/index.html 
upload: app 

url: (.*) 
static_files: app 
upload: app 

Я получаю эти ошибки на консоли:

INFO  2015-04-23 10:02:33,782 module.py:788] default: "GET /app/ HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,846 module.py:788] default: "GET /app/bower_components/html5-boilerplate/css/normalize.css HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,847 module.py:788] default: "GET /app/bower_components/html5-boilerplate/css/main.css HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,854 module.py:788] default: "GET /app/bower_components/angular-ui-grid/ui-grid.min.css HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,854 module.py:788] default: "GET /app/css/app.css HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,854 module.py:788] default: "GET /app/bower_components/bootstrap/dist/css/bootstrap.css HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,854 module.py:788] default: "GET /app/bower_components/angular-ui-select/dist/select.min.css HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,856 module.py:788] default: "GET /app/bower_components/select2/select2.css HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,858 module.py:788] default: "GET /app/bower_components/selectize/dist/css/selectize.default.css HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,862 module.py:788] default: "GET /app/bower_components/angular/angular.js HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,863 module.py:788] default: "GET /app/bower_components/angular-resource/angular-resource.js HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,864 module.py:788] default: "GET /app/bower_components/angular-route/angular-route.js HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,864 module.py:788] default: "GET /app/bower_components/html5-boilerplate/js/vendor/modernizr-2.6.2.min.js HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,865 module.py:788] default: "GET /app/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,868 module.py:788] default: "GET /app/bower_components/angular-ui-grid/ui-grid.min.js HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,869 module.py:788] default: "GET /app/bower_components/angular-ui-select/dist/select.min.js HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,870 module.py:788] default: "GET /app/bower_components/angular-sanitize/angular-sanitize.min.js HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,870 module.py:788] default: "GET /app/bower_components/selectize/dist/js/selectize.min.js HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,871 module.py:788] default: "GET /app/bower_components/angular-ui-router/release/angular-ui-router.min.js HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,874 module.py:788] default: "GET /app/bower_components/underscore/underscore.js HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,877 module.py:788] default: "GET /app/js/controllers.js HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,877 module.py:788] default: "GET /app/bower_components/angular-underscore/angular-underscore.js HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,877 module.py:788] default: "GET /app/js/app.js HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,881 module.py:788] default: "GET /app/components/version/version.js HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,884 module.py:788] default: "GET /app/components/version/version-directive.js HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,885 module.py:788] default: "GET /app/js/services.js HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,885 module.py:788] default: "GET /app/components/version/interpolate-filter.js HTTP/1.1" 304 - 
INFO  2015-04-23 10:02:33,885 module.py:788] default: "GET /app/js/filters.js HTTP/1.1" 304 - 

может кто-нибудь объяснить, что это не так?

ответ

0

Не обязательно что-то не так.

Все ваши вызовы возвращаются с кодом состояния 304.
304 означает, что запрашиваемый ресурс не был изменен с момента последнего обращения к нему.
304 является не код с указанием ошибки.

Скорее всего, ваш браузер по-прежнему имеет результат запроса в кеше.


Wikipedia's explanation короткий, но довольно четкий.

304 Not Modified

Указывает, что ресурс не был изменен с версии указанного запроса заголовков If-Modified-Since или If-None-Match. Это означает, что нет необходимости повторно передавать ресурс, поскольку клиент по-прежнему имеет ранее загруженную копию.

Также см. RFC, который имеет намного больше деталей.

304 Not Modified

Если клиент выполнил условный запрос GET и доступ разрешен, но документ не был изменен, сервер должен ответить этот код состояния. Ответ 304 НЕ ДОЛЖЕН содержать тело сообщения и поэтому всегда заканчивается первой пустой строкой после полей заголовка.

Ответ ДОЛЖЕН содержать следующие поля заголовка:

  • Дата, если ее пропуск не требуется разделом 14.18.1 Если clockless сервер происхождения подчиняется этим правилам, и прокси-серверы и клиенты добавить свои собственные даты к любому ответу, полученному без него (как уже указано , указанному в [RFC 2068], раздел 14.19), кеши будут корректно работать .

  • ETag и/или Content-Location, если заголовок был бы послан в 200 ответ на тот же запрос

  • Expires, Cache-Control и/или Варах, если поле значение может отличаются от тех, которые отправлены в любом предыдущем ответе для того же варианта . Если условное GET использовало сильный валидатор кеша (см. Раздел 13.3.3), ответ НЕ ДОЛЖЕН включать другие сущности-заголовки. В противном случае (т. Е. Условный GET использовал слабый валидатор ), ответ НЕ ДОЛЖЕН включать другие заголовки объектов; этот предотвращает несоответствия между кэшированными сущностями и обновленными заголовками .

Если 304 ответа указывает на объект, в настоящее время не кэшированный, то кэш ДОЛЖЕН игнорировать ответ и повторить запрос без условного .

Если кэш использует полученный ответ 304 для обновления записи кэша, то кеш ДОЛЖЕН обновить запись, чтобы отразить любые новые значения полей, указанные в ответе .


читайте также эту тему, связанную What is the difference between HTTP status code 200 (cache) vs status code 304?

+0

Я очистил кеш и снова проверил, когда я перехожу в сеть при отладке браузера и проверял css и js, его больше нет. – mirfan899

+0

@ mirfan899 Что там больше нет? –

+0

css и js-файлы имеют статус 304, но когда я обращаюсь к нему с URL-адресом, он показывает index.html для каждого файла css и js. – mirfan899

0

Ваш адрес в маршрутизации app.yaml неверен за то, что вы пытаетесь достичь. Вы запрашиваете файлы javascript с URL-адресами, например /app/js/foo.js. Ваш маршрутизации

url: js 
static_dir: app/js 

матчи URL-адреса, начинающиеся с пути

url: (.*)/.* 
static_files: app/index.html 

спичек 'Js' все пути с косой черты в них (например, your-app.appspot.com/app/js/app.js) и возвращает app/index.html для них.

URL-адреса в app.yaml - это регулярные выражения, которые должны соответствовать полному пути, а не каталогам или префиксам.

Смежные вопросы