Взаимодействуют ли наборы статических файлов и файлов ресурсов в конфигурации Google App Engine?

Файл конфигурации appengine-web.xml Google App Engine позволяет указать, какие файлы являются статическим содержимым, а какие — ресурсами. Когда вы загружаете свое приложение в Google, только содержимое, обозначенное как статическое, будет размещено на серверах статического содержимого, и только файлы, обозначенные как ресурсы, будут отправлены на серверы приложений (перефразируя из https://developers.google.com)./appengine/docs/java/config/appconfig).

У меня есть некоторые операторы конфигурации, которые выглядят как...

  <static-files>
    <include path="/**.html" />
    <include path="/**.js" />
    <include path="/**.css" />
    <include path="/**.ico" />
    <include path="/**.png" />
    <include path="/**.jpg" />
    <include path="/**.gif" />
  </static-files>

  <resource-files>
    <include path="/**.ftl" />
  </resource-files>

Мои вопросы...

Когда я добавляю файлы в список статических файлов, означает ли это, что они также не будут поставляться как файлы ресурсов?

Когда я добавляю файлы в список файлов ресурсов, означает ли это, что они также не будут поставляться как статические файлы?

Или мне нужно указать полный набор путей исключения в каждом разделе?

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

Спасибо!


person Chuck    schedule 07.03.2013    source источник


Ответы (1)


Несколько моментов:

  1. Суть статических файлов в том, что они передаются непосредственно конечному пользователю. Они обслуживаются не сервером GAE, а специализированными (внутренними) серверами Google CDN. Это улучшает время загрузки. Для статического файла вы также можете объявить заголовки «Cache-control», что еще больше улучшит время загрузки (поскольку клиентские кеши и нисходящие кеши будут кэшировать его).

  2. Файлы ресурсов предназначены для использования кодом приложения, а не для прямого обслуживания. Afaik, они все еще обслуживаются как файлы, но они обслуживаются серверами GAE, потому что они должны быть на экземплярах GAE.

  3. Файлы в общедоступной части WAR по умолчанию рассматриваются как статические файлы и файлы ресурсов. Поэтому вам нужно явно исключить их, если вы хотите, чтобы они служили файлами.

  4. Файлы в /WEB-INF никогда не обслуживаются, но может получить доступ по коду. Также файлы, помещенные в каталоги кода (/src), могут быть доступны для кода, но не будут обслуживаться как статические файлы (они будут скопированы в /WEB-INF/classes).

person Peter Knego    schedule 08.03.2013
comment
Спасибо за ответы. Я знал об этих пунктах по большей части, за исключением вашего примечания об исключении в пункте 3. Это был основной пункт моего вопроса. Итак, вы говорите, что если я хочу что-то в виде статического файла, а не ресурса, мне нужно явно исключить их (и наоборот) в списке ресурсов. И наоборот. - person Chuck; 08.03.2013
comment
Да, так говорят документы. 3-й и 4-й абзацы: developers.google.com/appengine/docs/java. /конфигурация/ - person Peter Knego; 08.03.2013
comment
На самом деле, после повторного прочтения документов кажется, что, добавляя одну директиву включения, вы ограничиваете набор только тем, что включено. Добавление директивы exclude только уменьшает включенный набор. Так что в моем примере мне не пришлось бы добавлять шаблон ftl в качестве исключения в список статических файлов. Только включенные шаблоны будут отправлены на серверы CDN. Спасибо. - person Chuck; 08.03.2013