`

rails代码优化,反面例子

阅读更多
现象就是报警总数多的时候,页面打开要很长时间
有问题的代码如下:

module Service
  class UrlProfile; end
  
  class << UrlProfile
    
    def search_followers options, index
      options = inner_option_convert options
      Following::search_followers options, index
    end
    
    def search_alerts options, index
      options = inner_option_convert options
      sort_by = case options[:sort_by]
              when 'type' : 'category asc'
              else 'created_at desc'
              end
      condition= { "index_id" => index.id } 
      condition["category"] = options[:filter] unless options[:filter].blank? or options[:filter] == 'all'
      alert_list = Alert::Alert.all( :conditions => condition, :order=> sort_by )
      alert_list.paginate( options )        
    end
    
    private
    def inner_option_convert options
      options[:per_page] = '10' if options[:per_page].blank?
      options[:sort_by] = 'date' if options[:sort_by].blank?
      options
    end

  end
end




  .alert_filter
    = select("params", "filter", Alert::Alert.all.collect{|al| al.category}.uniq.compact, {:include_blank => "ALL", :selected => "#{params[:filter]}"} )


第一段代码的问题是,内存分页
第二段代码问题是,内存取了所有alert
修改后如下:
module Service
  class UrlProfile; end
  
  class << UrlProfile
    
    def search_followers options, index
      options = inner_option_convert options
      Following::search_followers options, index
    end
    
    def search_alerts options, index
      options = inner_option_convert options
      sort_by = case options[:sort_by]
              when 'type' : 'category asc'
              else 'created_at desc'
              end
      condition= { "index_id" => index.id } 
      condition["category"] = options[:filter] unless options[:filter].blank? or options[:filter] == 'all'
      alert_list = Alert::Alert.paginate(:conditions => condition, :order=> sort_by, :page => options[:page], :per_page => options[:per_page] )   
    end
    
    private
    def inner_option_convert options
      options[:per_page] = '10' if options[:per_page].blank?
      options[:sort_by] = 'date' if options[:sort_by].blank?
      options
    end

  end
end


    = select("params", "filter", Alert::CATEGORY, {:include_blank => "ALL", :selected => "#{params[:filter]}"} )




0
0
分享到:
评论

相关推荐

    rails性能优化

    Rails性能优化是一个涉及多个方面的复杂过程,它要求开发者对Ruby on Rails框架的内部机制有深刻的理解,并且能够合理地应用各种技术和工具来提升应用的性能。在性能优化的过程中,首先应该避免盲目优化,而是要通过...

    Ruby on Rails入门经典代码

    本压缩包中的"Ruby on Rails入门经典代码"提供了新手学习Rails的宝贵资源,帮助初学者快速掌握这个强大的框架。 1. **Rails基础知识**: - MVC架构:Rails的核心设计模式,模型负责数据处理,视图负责展示,控制器...

    Rails项目源代码

    这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何利用Rails的强大功能来创建一个允许用户上传、分享和浏览图片的应用。 1. **Rails框架基础**: Rails的核心理念是DRY(Don't...

    Complex Rails system_Rails_优化_

    三、代码优化 1. **避免在循环中进行数据库查询**:将查询移到循环之外,减少不必要的数据库交互。 2. **减少视图复杂性**:保持视图简洁,避免嵌套过深的辅助方法和复杂的模板逻辑。 3. **利用惰性枚举**:对于...

    Ruby on Rails:Rails性能优化与缓存策略.docx

    Ruby on Rails:Rails性能优化与缓存策略.docx

    Ruby on Rails源代码

    在Ruby on Rails的源代码中,我们可以深入理解其内部工作原理,包括路由、数据库交互(ActiveRecord)、模板引擎(ERB或Haml)、测试工具(Rspec或Minitest)等核心组件。以下是一些关键知识点的详细解释: 1. **...

    7-享洗-Rails 代码规范1

    《享洗自助洗衣系统Rails代码规范详解》 在软件开发过程中,代码规范是提高代码质量、增强团队协作效率的关键因素。针对北京交通大学享洗自助洗衣系统的开发,项目负责人王子杰制定了详尽的Ruby on Rails(简称...

    Ruby on Rails入门例子

    在"Ruby on Rails入门例子"中,我们可能会遇到以下关键概念: - **路由(Routes)**:Rails的路由系统将URL映射到特定的控制器动作,定义了应用的导航结构。在`config/routes.rb`文件中配置路由规则。 - **生成器...

    基于ruby on rails开发示例源码

    Ruby on Rails,简称Rails,是一种基于Ruby编程语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和代码的可读性。本示例源码提供了使用Ruby on Rails进行实际项目开发的具体...

    ruby_on_rails 源代码上

    Ruby on Rails,简称Rails,是基于Ruby...以上只是Ruby on Rails的部分基础知识,实际开发中还会涉及到更多如缓存、部署、安全性、性能优化等方面的知识。通过深入学习和实践,你可以更好地掌握这个强大的Web开发框架。

    rails向导打包

    7. **Rails 命令行工具和 Rake 任务**: Rails 提供了一系列命令行工具,如 `rails server`、`rails generate` 和 `rails dbconsole`,帮助开发者快速启动、生成代码和操作数据库。Rake 是一个构建工具,用于执行任务...

    Ruby on Rails入门经典-例子

    9. **Asset Pipeline**:Rails的资产管道允许你管理和优化应用中的CSS、JavaScript和图片资源,通过concatenation和minification提升页面加载速度。 10. **Action Cable**:Rails 5引入的特性,实现了Websocket功能...

    ruby on rails源代码分析

    Rails 是一个基于 Ruby 语言的 web 应用程序框架,以其“约定优于配置”的设计...通过对源代码的分析,我们可以更深入地了解 Rails 如何管理依赖、配置和加载组件,这对于提升开发效率和优化应用程序性能具有重要意义。

    Ruby-GoOnRails使用Rails生成器来生成一个Golang应用

    `GoOnRails`是专门为Rails开发者设计的一个生成器,它允许在Rails应用中集成Go代码,创建Go API服务。这个工具简化了在Rails项目中使用Go进行后端处理的流程,使开发者可以利用Go的性能优势处理高并发请求,同时保留...

    Rbuy for Rails源代码

    “Rbuy for Rails源代码”这一标题表明我们关注的是一个名为“Rbuy”的项目,它是为Rails框架开发的一个特定组件或应用。Rails是Ruby on Rails的简称,是一个基于Ruby语言的开源Web应用程序框架,遵循MVC(模型-视图...

    web开发之rails最新调试通过购物车代码

    本压缩包中的"web开发之rails最新调试通过购物车代码"是关于使用Rails进行Web应用开发的一个实例,特别是针对购物车功能的实现。 购物车是电商网站的核心部分,它允许用户选择商品并保存这些选择以便后续购买。在...

    rails的最好的事例

    ### 知识点一:Rails项目初始化与数据库配置 #### 1.1 创建Ruby on Rails项目 - **准备工作**:确保MySQL服务器已经启动。如果未启动,请先启动MySQL服务器。 - **步骤一**:打开命令行窗口,在命令行中输入以下...

    agile web development with rails2代码

    该压缩包文件包含了该书的源代码示例,帮助读者深入理解Rails2版本中的各种开发实践和技术。 在Rails2这个版本中,主要知识点包括: 1. **MVC架构**:Rails遵循Model-View-Controller(MVC)设计模式,将业务逻辑...

    Ruby on Rails Tutorial Learn Rails by Example 的源代码

    在`sample_app`中,你可以看到如何组织代码以符合Rails的约定,如目录结构、控制器、模型和视图的创建。 2. **Gemfile和依赖管理**:在项目根目录下,`Gemfile`定义了项目所依赖的Ruby库(Gems)。通过`bundle ...

    Beginning Ruby on rails 源代码

    《初识Ruby on Rails:源代码解析》 Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在简化Web开发过程,提高开发效率。本资料包包含了...

Global site tag (gtag.js) - Google Analytics