2012-02-07 27 views
5

Tôi đang tạo ứng dụng đầu tiên trên công cụ ứng dụng của Google. Trước khi tôi chỉ kiểm tra kết quả chính xác cho ứng dụng của tôi. Nhưng sau đó ứng dụng của tôi bắt đầu phản hồi thực sự muộn. Sau đó, tôi đã đi qua tài liệu công cụ ứng dụng google và bây giờ bắt đầu sử dụng appstats. Tôi thực sự mới mẻ với điều đó. Tôi đã xem một đoạn video về nó và có một số thứ nhưng tôi vẫn còn chút bối rối. Dưới đây là biểu đồ cho yêu cầu một đăng nhập trong ứng dụng của tôi:Mở rộng mẫu là gì và làm cách nào để chúng tôi có thể giảm bớt nếu ứng dụng công cụ ứng dụng google của chúng tôi?

enter image description here

và đây Sau đây là mã cho LoginCheckServlet tôi:

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(); 
     } 
    } 
} 

theo công cụ ứng dụng google một truy vấn mất hầu hết thời gian và khoảng 50-100 ms. Nhưng trong đồ thị tổng thời gian thực hiện là 15167 ms. Và thời gian mà ứng dụng của tôi không làm gì (mở rộng mẫu) được gọi bởi anh chàng trong bản trình bày là gần 140000ms. Tôi không hiểu rằng việc mở rộng mẫu đó là gì và tại sao ứng dụng của tôi lại chiếm một lượng lớn? Làm thế nào tôi có thể giảm nó? Có thể là một câu hỏi cơ bản của nó nhưng tôi rất mới này và tôi tìm kiếm nhưng không thể tìm thấy một cái gì đó giúp đỡ. Cảm ơn trước.

+0

Đây có phải là mã thực tế bạn đang chạy không và kết quả có phù hợp không? Có lẽ bạn đã có rất nhiều tài sản được xác định? Bao gồm các định nghĩa về các mô hình của bạn trong câu hỏi. –

+0

Bạn cũng có các vấn đề về độ trễ tương tự cho các trình xử lý khác hoặc chỉ có trình xử lý này không? – proppy

+0

của nó cho hầu như tất cả các trình xử lý – Piscean

Trả lời

1

Vì mẫu @ menourcode menitoend được sử dụng để tạo HTML. Một số công cụ tạo mẫu được xây dựng trong công cụ ứng dụng của Google là Django, jinja.

Trước hết tôi muốn cho bạn biết lưu trữ mật khẩu bao gồm không phải là một Idea.Make chắc chắn rằng họ đang băm. Nếu trang web của bạn đi thương mại và nó bị tấn công oyur khách hàng sẽ được pissed off.Consider sử dụng băm thư viện .

Thứ hai để giảm thời gian truy vấn thông qua khái niệm này được gọi là memcache.Điều này sẽ làm giảm đáng kể thời gian truy vấn của bạn.

Dưới đây là ví dụ đơn giản để sử dụng memcache: - từ google.appengine.ext nhập khẩu db từ google.appengine.api nhập khẩu 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 

Bạn có thể sử dụng các chức năng tương tự cho việc đọc từ memcache và sau đó ghi dữ liệu vào memcache

Ví dụ: để đọc từ memcache: - thuật = top_arts()

khi viết vào cơ sở dữ liệu: -

#write your entry in database 
<some database code> 
#update memcache with this new entry 
top_arts(update=True) 
Các vấn đề liên quan