статические таблицы стилей перезагружаются с каждым пост-запросом - PullRequest
2 голосов
/ 10 июня 2009

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

Среда - приложения Google в Python.

Ответы [ 3 ]

2 голосов
/ 10 июня 2009

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

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

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

1 голос
/ 11 июня 2009

Если ваш CSS происходит из статического файла, то, как сказал Стив, вы хотите поместить его в статический каталог и указать его в файле 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)
0 голосов
/ 10 июня 2009

Вам просто нужно поместить все ваши 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...