读《应用rails进行敏捷web开发》第2版-15

今天上午整理了一下系统:

  原先一次性支付的费用要改成3次支付,于是改计费系统、查询系统、业务系统,增删了几个存储过程和数据库函数,全面做好了升级的准备。就等确定实施日期了。

  高扩展性的系统,会造成性能下降——由于增加了原先不需要的一些计费,目前一条记录存入,需要进行50+次查询,好计算其费用,这个有待优化,提高响应速度。

 

  下午,业务系统和查询系统外网崩溃了。

  跑到机房,由于服务器上没有标签,kvm到一台服务器(windows 2003)上,发现密码不管用,以为被黑了,赶紧修复,把admin的密码给破解了,冲进去一看,咦?怎么是SQLServer!!而且没有WebsPhere喃?最终确定这不是公司的服务器!!!!!汗。。。

  赶紧把网管叫来,让他自己把密码重新设置了。才又找到自己的服务器,发现已经运行了133天了,133天的websphere是很不正常的。 重启后发现还是没好,又跟网管沟通了一下,结果是网管同学把必要的两口端口的外网访问给关了,泪奔了。。还好,下班前搞定了。

 


开始p445

flash

文中说flash.now用于将变量从控制器传到视图,有这个必要嘛?视图可以直接访问控制器变量的呀?

 

过滤器

3种过滤器before、after、around都可以访问控制器的request和response变量

 

过滤器可以使用3种方式定义

 

around过滤器

 

 

过滤器可以依照继承的关系继续,但不向上兼容,即子类过滤器对父类无效。这也是应该的,子类的定义本来就不应该影响父类。

 

 

校验(注意,此处的校验是控制器的校验,不同于模型层的校验,因此在代码上,要分清楚一个校验应该在控制器进行还是模型进行)

 

 

 

缓存

要缓存,必须保证同一个url出现的页面是不变的,才有必要使用。

3种缓存方式:页面缓存、action缓存、片段缓存

页面缓存:rails不参与,web服务器直接搞定

action缓存:执行前置过滤器,不执行action代码

action 缓存机制其实就是around_filter

 

 

是否使用缓存的原则:我们的应用得知道缓存是否失效了。

1.依赖时间变化的页面

2.依赖session变换的

3.依赖数据库数据,同时数据库数据除了应用本身会被外部更改的

都不适合使用缓存

使用和url_for一样的参数,生成的url相应的缓存会被删除。

 

什么时候删除?

如果缓存首页的数据列表,那么在新增文章(create_article)里就应该expire缓存。

 

清扫器sweeper是一个observe,上面的方法耦合性过强

sweeper检测model,通过model的钩子方法(after_create之类)监视model变化,根据变化调用expire_page、expire_action来使控制器缓存失效,代码不贴了,太长,懒得敲。

 

理一下头绪。

1.controller通过cache_sweeper,开启清扫监视

2.当被监视的action被调用(随后model可能发生变化),sweeper开始工作,

3.sweeper根据model变化,决定缓存是否失效。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值