Я перечитывал документы снова и снова в надежде лучше понять это. Это то, что я понял из этого.
App Engine сообщает, что загружает наши статические файлы и код приложения в разные места. Для этого он должен знать, какие файлы являются статическими - это указывается в параметре upload.
Однако возникает ряд вопросов, касающихся дизайна параметров, указанных в app.yaml.
Может ли App Engine определить, какие файлы являются статическими, только из параметра static_files?
В вашем примере значение параметра static_files было идентично значению параметра загрузки (т.е. media / img / favicon.ico). Однако в целом значение параметра static_files отличается от значения параметра загрузки. Параметр static_files предназначен для того, чтобы в него можно было подставлять соответствующие группы из шаблона url для генерации пути к файлу, например,
- url: /item-(.*?)/category-(.*)
static_files: archives/\2/items/\1
upload: archives/(.*?)/items/(.*)
Может ли App Engine определить, какие файлы являются статическими, только из параметра url?
Как правило, нет, поскольку иерархия ресурсов, подразумеваемая URL-адресом, может не совпадать с фактической структурой папок. Например, я мог бы поместить свой index.html в подпапку, но я мог бы захотеть получить к нему доступ с помощью корневого URL-адреса hello.appspot.com/, а не hello.appspot.com/subfolder/".*1021. *
Может ли App Engine определить, какие файлы являются статическими, используя параметр url и параметр static_files?
Представляется целесообразным написать функцию, которая возвращает шаблон загрузки с заданным параметром url и параметром static_files, тем самым устраняя необходимость в явном параметре загрузки. Я бы подумал, что это работает для простых случаев, однако, вероятно, есть причина, о которой я не знаю, что документы пишут: «Обработчик не может определить, какие файлы в каталоге вашего приложения соответствуют заданным шаблонам url и static_files».
url: шаблон URL в виде регулярного выражения. Выражение может содержать группировки, на которые можно ссылаться в пути к файлу сценария с помощью обратных ссылок регулярного выражения. Например, /item-(.?)/category-(.) будет соответствовать URL / item-127 / category-fruit и использовать 127 и fruit в качестве первой и второй группировок.
Обработчики:
- url: /item-(.*?)/category-(.*)
static_files: archives/\2/items/\1
static_files:
Путь к статическим файлам, соответствующим шаблону URL, из корневого каталога приложения. Путь может ссылаться на текст, сопоставленный в группах в шаблоне URL.
Как и в предыдущем примере, archives/\2/items/\1
вставляет второе и первое сопоставления вместо \2
и \1
соответственно. С помощью шаблона в приведенном выше примере путь к файлу будет archives/fruit/items/127
.
загрузка:
Регулярное выражение, которое соответствует путям к файлам для всех файлов, на которые будет ссылаться этот обработчик. Это необходимо, потому что обработчик не может определить, какие файлы в каталоге вашего приложения соответствуют заданным шаблонам url и static_files. Статические файлы загружаются и обрабатываются отдельно от файлов приложения. В приведенном выше примере может использоваться следующий шаблон загрузки: archives/(.*?)/items/(.*)
На дополнительном замечании, альтернативой использованию static_files является использование static_dir, если весь каталог можно пометить как статический. В этом случае параметр загрузки не требуется, поскольку static_dir должен указывать на фактический каталог, и, таким образом, App Engine просто загрузит весь каталог, в который он хранит статические файлы. Однако обратите внимание, что в этом случае использование параметра url будет другим.
URL:
URL-префикс. Это значение использует синтаксис регулярного выражения (поэтому специальные символы регулярного выражения должны быть экранированы), но оно не должно содержать группировки. Все URL-адреса, начинающиеся с этого префикса, обрабатываются этим обработчиком, используя часть URL-адреса после префикса в качестве части пути к файлу.
static_dir:
Путь к каталогу, содержащему статические файлы, из корневого каталога приложения. Все после конца соответствующего шаблона URL добавляется к static_dir, чтобы сформировать полный путь к запрашиваемому файлу.
Все файлы в этом каталоге загружаются вместе с приложением в виде статических файлов.