Что такое расширение шаблона и как мы можем уменьшить его, если наше приложение Google App Engine? - PullRequest
5 голосов
/ 07 февраля 2012

Я делаю свое первое приложение на Google App Engine. Прежде чем я просто проверял правильные результаты для своего приложения. Но потом мое приложение начало отвечать очень поздно. Затем я просмотрел документы по движку приложений Google и теперь начал использовать appstats. Я действительно новичок в этом. Я посмотрел видео об этом и получил кое-что, но все же я немного запутался. Ниже приведен график для одного запроса на вход в мое приложение:

enter image description here

и вот следующий код моего LoginCheckServlet:

 public class LoginCheckServlet extends HttpServlet {
     @SuppressWarnings("unchecked")
     public void doPost(HttpServletRequest req, HttpServletResponse resp)
     throws IOException {
        resp.setContentType("text/html");
        PrintWriter out = resp.getWriter();
        HttpSession session = req.getSession(true);
        PersistenceManager pm = PMF.get().getPersistenceManager();
        try
        {
            List<User> result = null;
            Query query = pm.newQuery(User.class);
            query.setFilter("email == emailParam");
            query.declareParameters("String emailParam");
            result = (List<User>) query.execute(req.getParameter("email"));
            if(result.size() == 0){
                out.println(0);
            }else{
                String pwd = req.getParameter("password");
                String userPwd = result.get(0).getPassword();
                if(pwd.equals(userPwd)){
                    result.get(0).setActive(true);
                    session.setAttribute("email", result.get(0).getEmail());
                    session.setAttribute("name", result.get(0).getName());
                    out.println("1");
                }else{
                    out.println("2");
                }
            }
         }catch(Exception ex)
         {
            out.println(ex);
         }
         finally
         {
            pm.close();
         }
     }
 }

в соответствии с Google App Engine запрос занимает большую часть времени и составляет около 50-100 мс. Но на графике общее время составляет 15167 мс. И время, в которое мое приложение ничего не делает (расширение шаблона), вызванное представителем презентации, составляет почти 140000 мс. Я не понимаю, что это за расширение шаблона и почему мое приложение так сильно его берет? Как я могу уменьшить его? Может быть, это основной вопрос, но я очень новичок в этом, и я искал, но не мог найти что-то помогающее. Заранее спасибо.

1 Ответ

1 голос
/ 26 июля 2012

Поскольку шаблон @italourcode menitoend используется для генерации HTML. Некоторыми шаблонизаторами, встроенными в движок приложений Google, являются Django, jinja.

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

Во-вторых, чтобы сократить время запросов, используйте концепцию memcache. Это значительно сократит время ваших запросов.

Вот простой пример использования memcache: - из google.appengine.ext import db из google.appengine.api импортировать memcache

def top_arts(update = False):
  key = 'top'

  #Getting arts from memcache
  arts = memcache.get(key)

  #Check if key is defined in memcache
  #or an update has been invoked
  if update or not arts:
    #Querying the Google Data store using GQL
    arts = db.GqlQuery('SELECT * from Art ORDER BY created DESC LIMIT 10')
    memcache.set(key, arts)
  return arts

Вы можете использовать ту же функцию для чтения из memcache и затем записи данных в memcache

Например: для чтения из memcache: - art = top_arts ()

при записи в базу данных: -

#write your entry in database
<some database code>
#update memcache with this new entry
top_arts(update=True)
...