Il y a une semaine, j'ai commencé à déplacer mon ancienne application écrite dans Rails 2.3.5 vers new 3.0. Malheureusement, j'ai découvert que certaines vues se chargent étonnamment lentement.Rails3 - Pourquoi mes temps de chargement sont si longs?
Exemple:
Rails 2.3.5 Ruby 1.8.7 -> WEBrick: Completed in 297ms (View: 143, DB: 40)
Rails 3.0.0 Ruby 1.8.7 -> WEBrick: Completed in 3081ms (View: 261, ActiveRecord: 108)
Rails 3.0.0 Ruby 1.8.7 -> WEBrick: Completed in 2495ms (View: 356, ActiveRecord: 76), slightly improved version -> less SQL queries, more counting in the view
Rails 3.0.0 Ruby 1.9.2 -> WEBrick: Completed in 2941ms (View: 423, ActiveRecord: 90), imp. version
Les temps diffèrent avec chaque reload bien sûr, mais vous pouvez obtenir l'idée - dans Rails 3 ce point de vue des charges 10 fois plus lente, peu importe si j'utiliser Ruby 1.8.7 ou 1.9 .2. J'ai vérifié cela dans les environnements de développement et de production ainsi que sur Heroku - à chaque fois, il se ressemble. Les temps de chargement des autres vues sont environ 2 fois plus lents dans 3.0.
Ici vous pouvez trouver tous les journaux:
http://img811.imageshack.us/img811/8514/1rails235ruby187oldver.jpg
http://img217.imageshack.us/img217/5521/2rails300ruby187oldver.jpg
http://img7.imageshack.us/img7/3089/3rails300ruby187diffver.jpg
http://img534.imageshack.us/img534/5138/4rails300ruby192diffver.jpg
Quel est le problème ici? J'ai été occupé pendant une semaine à adapter tous mes contrôleurs, vues, gemmes, plugins et configs à Rails3 et maintenant je suis bloqué ... Je pense que je devrais apprendre un peu de PHP, car cela me donnerait plus de contrôle sur ce qui est réellement événement.
La vue va ici:
<%= render :partial => 'menu' %>
<div id="preload">
<%= image_tag("/images/next_big.png") %>
</div>
<div class="clearer"><hr /></div>
<div class="picture">
<%= link_to image_tag(@picture.img.url(:page), :alt => @picture.title.gsub("; "," "), :border => 0), :action => "fullsize", :link => @picture.link %>
</div>
<div class="right">
<div class="title"><%= raw @picture.title.gsub("; ","<br />") %></div>
<div class="tags">
<% taglist = @picture.cached_tag_list.split(", ") %>
<% x = taglist.length %>
<% y = 0 %>
<% x.times do %>
<a href = "/tag/<%= taglist[y].gsub(" ", "_") %>"><%= taglist[y] %></a><% y += 1 %><% if y != x %>,<% end %>
<% end %>
</div>
<div class="datetime">Posted <%= time_ago_in_words(@picture.created_at) %> ago</div>
<% this_voting = "voting" %>
<div id="<%= this_voting %>" class="voting">
<%= link_to image_tag("/images/yes.png", :alt => "Vote up", :class => 'vote_button'), {:action => :yes_vote, :id => @picture.id}, :remote => true %>
<span id="<%= this_voting + '_result' %>"><%= @picture.voting %></span>
<%= link_to image_tag("/images/no.png", :alt => "Vote against", :class => 'vote_button'), {:action => :no_vote, :id => @picture.id}, :remote => true %>
Pageviews: <%= @picture.views %>
</div>
<div class="link">Link:<br /><input type="text" value="http://bzzzzzzzzzzz.com/<%= @picture.link %>" /></div>
<div class="share">Share:<br />
<a href="http://facebook.com/sharer.php?u=http://bzzzzzzzzzzz.com/<%= @picture.link %>" target="_blank">
<img src="/images/mfb.png" alt="Facebook" onmouseover="puttext(fb, 0)" onmouseout="cleartext(0)" border="0" /></a>
<a href="http://twitter.com/home?status=http://bzzzzzzzzzzz.com/<%= @picture.link %>" target="_blank">
<img src="/images/mtwitter.png" alt="Twitter" onmouseover="puttext(twitter, 0)" onmouseout="cleartext(0)" border="0" /></a>
<a href="http://digg.com/submit?url=http://bzzzzzzzzzzz.com/<%= @picture.link %>&title=<%= @picture.title.gsub("; "," ") %>&media=image&topic=comedy" target="_blank">
<img src="/images/mdigg.png" alt="Digg" onmouseover="puttext(digg, 0)" onmouseout="cleartext(0)" border="0" /></a>
<a href="http://reddit.com/submit?url=http://bzzzzzzzzzzz.com/<%= @picture.link %>&title=<%= @picture.title.gsub("; "," ") %>" target="_blank">
<img src="/images/mreddit.png" alt="Reddit" onmouseover="puttext(reddit, 0)" onmouseout="cleartext(0)" border="0" /></a>
<a href="http://stumbleupon.com/submit?url=http://bzzzzzzzzzzz.com/<%= @picture.link %>" target="_blank">
<img src="/images/msu.png" alt="StumbleUpon" onmouseover="puttext(su, 0)" onmouseout="cleartext(0)" border="0" /></a>
</div>
<div id="share_caption0" class="share_caption"></div>
<div class="small_clearer"></div>
<% if @picture.last_comment_body %>
<div class="links_to_c">
<a href="#comments"><%= @picture.comments_count %> comment<% if @picture.comments_count > 1 %>s<% end %></a>
| <%= link_to "Write a comment", :anchor => "add_comment" %>
</div>
<% else %>
<div class="links_to_c">
<%= link_to "No comments, write a comment", :anchor => "add_comment" %>
</div>
<% end %>
<% if @picture.fullsize == true %>
<div class="fullsize">
<%= link_to "Fullsize", :action => "fullsize", :link => @picture.link %>
</div>
<% end %>
</div>
<div class="next">
<% if @picture.id != 1 %>
<% next_pict_link = Picture.find(@picture.id.to_i - 1).link %>
<%= link_to image_tag("/images/next.png", :alt => 'Next picture', :border=>0, :onmouseover => "this.src='/images/next_big.png'", :onmouseout => "this.src='/images/next.png'"), :action => 'show', :link => next_pict_link %>
<% else %>
<% last_pict_link = Picture.find(:last).link %>
<%= link_to image_tag("/images/next.png", :alt => 'Latest picture', :border=>0, :onmouseover => "this.src='/images/next_big.png'", :onmouseout => "this.src='/images/next.png'"), :action => 'show', :link => last_pict_link %>
<% end %>
</div>
<div class="clearer" style="padding-bottom: 0px"><hr /></div>
<h1><%= @thumbnails_text %></h1>
<% @pictures.each do |pict| %>
<%= link_to image_tag(pict.img.url(:thumb), :alt => "", :border => 1, :class => 'thumbnail'), :action => "show", :link => pict.link %>
<% end %>
<div class="clearer" style="padding-top: 6px; padding-bottom: 15px"><hr /></div>
<% if @picture.last_comment_body != nil %>
<a name="comments"><h1>Comments:</h1></a>
<% @picture.comments.each do |comment| %>
<div id="<%= comment.id %>" class="comment">
<font class="c_author"><%= comment.author %></font>
<font class="c_datetime"><%= time_ago_in_words(comment.created_at) %> ago</font>
<font class="c_id">#<%= comment.id %></font><br />
<div class="c_body"><%= comment.body.gsub(/\n/, '<br />') %></div>
</div>
<% end %>
<% end %>
<div id="insert_here"></div>
<a name="add_comment"></a>
<%= form_for [@picture, Comment.new], :remote => true do |f| %>
<div id="add_comment" <% if @picture.last_comment_body == nil %>style="margin-top: 15px"<% end %>>
<div class="f_section">
<div class="f_type" style="padding-right: 46px"><%= f.label :author, "Nick:" %></div>
<div class="f_field"><%= f.text_field :author, :maxlength => 40 %></div>
</div>
<div class="f_section">
<div class="f_type"><%= f.label :body, "Comment:" %></div>
<div class="f_field"><%= f.text_area :body, :maxlength => 2000, :rows => 6 %></div>
</div>
<div class="f_section">
<div class="f_type" style="padding-right: 20px"><%= f.label :captcha, "Captcha:" %></div>
<div class="f_captcha"><%= raw recaptcha_tags %></div>
</div>
<div class="f_submit">
<%= f.submit "Submit", :class => 'submit' %>
</div>
</div>
<% end %>
<div class="clearer bottom_clearer fifty_from_top"><hr /></div>
Nous avons besoin de votre vue pour dire ce qui vous arrive – shingara