2009-06-10 2 views
2

Каждый раз, когда появляется сообщение со страницы, вся связка css перезагружается. Можно ли им сказать, чтобы они не приходили снова и снова. Существует серия GET, которая срабатывает. Можем ли мы каким-то образом оптимизировать или это нормальное поведение?статические таблицы стилей загружаются с каждым запросом на отправку

Окружающая среда - приложения google в python.

+0

У меня есть следующие строки в моем app.yaml и до сих пор она перезагружает с каждым запросом, я не имел линию истечения хотя, THx всех за ответ. обработчики: - url:/stylesheets static_dir: stylesheets – dhaval

ответ

2

Ознакомьтесь с использованием Static Files и Handlers for Static Files. Поскольку последняя ссылка относится к длительности кеша статических файлов, я считаю, что возможно кэширование.

В отличие от традиционных веб-хостинга среды, Google App Engine делает не обслуживать файлы непосредственно из исходного каталога приложения, если не сконфигурирован для этого. Мы назвали наш файл шаблона index.html, но этот автоматически не делает файл доступным по адресу URL /index.html.

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

0

Вам просто нужно поместить все ваши css в «статический каталог» и указать истечение срока действия в файле app.yaml.

Вот app.yaml одного моего проекта:

application: <my_app_id> 
version: 1 
runtime: python 
api_version: 1 
skip_files: | 
    ^(.*/)?(
    (app\.yaml)| 
    (index\.yaml)| 
    (\..*)| 
    (.*\.pyc)| 
    (.*\.bat)| 
    (.*\.svn/.*)| 
    (.*\.lnk)| 
    (datastore/.*)| 
    (img/src_img/.*)| 
    )$ 

handlers: 
- url: /favicon\.ico 
    static_files: img/favicon.ico 
    upload: img/favicon.ico 
    expiration: 180d 

- url: /img 
    static_dir: img 
    expiration: 180d 

- url: /static-js 
    static_dir: static-js 
    expiration: 180d 

- url: .* 
    script: main.py 
1

Если ваш CSS происходит от статического файла, то как уже упоминалось Steve вы хотите поместить его в статическом каталоге и указать его в вашем Файл app.yaml. Например, если ваши CSS файлы находятся в директории под названием таблицы стилей:

handlers: 
- url: /stylesheets 
    static_dir: stylesheets 
    expiration: "180d" 

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

Если ваш CSS динамически сгенерирован, тогда, когда приходит запрос, вы хотите установить кеширование в заголовках объекта ответа. Например, в обработчике запроса вы можете иметь что-то вроде этого:

class GetCSS(webapp.RequestHandler): 
    def get(self): 
    # generate the CSS file here, minify it or whatever 
    # make the CSS cached for 86400s = 1 day 
    self.response.headers['Cache-Control'] = 'max-age=86400' 
    self.response.out.write(your_css) 
Смежные вопросы