什么是模板扩展?如果我们的谷歌应用引擎应用程序,我们如何减少它?

Pis*_*ean 5 google-app-engine appstats

我正在谷歌应用引擎上制作我的第一个应用.在我检查我的应用程序的正确结果之前.但后来我的应用程序开始响应很晚.然后我通过谷歌应用程序引擎文档,现在开始使用appstats.我真的很陌生.我看了一段关于它的视频并得到了一些东西,但我仍然有点困惑.以下是我的应用中一个登录请求的图表:

在此输入图像描述

以下是我的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();
         }
     }
 }
Run Code Online (Sandbox Code Playgroud)

根据谷歌应用程序引擎,查询占用大部分时间,大约50-100毫秒.但在图表中,总时间为15167毫秒.我的应用程序在演示文稿中调用的任何内容(模板扩展)的时间几乎是140000ms.我不明白那个模板扩展是什么以及为什么我的应用程序占用了大量的内容?我怎样才能减少它?可能是一个基本的问题,但我对此非常新,我搜索但找不到帮助的东西.提前致谢.

Axe*_*era 1

@allyourcode menitoend 模板用于生成 HTML。Google 应用程序引擎中内置的一些模板引擎是 Django 、 jinja 。

首先,我想让您知道,存储不明确的密码不是一个好主意。确保它们经过哈希处理。如果您的网站商业化并且被黑客攻击,您的客户会很生气。考虑使用哈希库。

其次,为了减少查询时间,请使用称为内存缓存的概念。这将大大减少您的查询时间。

以下是使用 memcache 的简单示例:- from google.appengine.ext import db from google.appengine.api import 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
Run Code Online (Sandbox Code Playgroud)

您可以使用相同的函数从 memcache 读取数据,然后将数据写入 memcache

例如:从内存缓存读取:- arts = top_arts()

写入数据库时​​:-

#write your entry in database
<some database code>
#update memcache with this new entry
top_arts(update=True)
Run Code Online (Sandbox Code Playgroud)