Ticket #68 (new defect: null)
关于搜索页热卖商品的接口和缓存问题
| Reported by: | liaojunqiang | Owned by: | |
|---|---|---|---|
| Priority: | trivial | Milestone: | |
| Component: | 网友前台 | Version: | |
| Keywords: | 接口 resin缓存 | Cc: | |
| Due Date: | 28/12/2011 |
Description (last modified by liaojunqiang) (diff)
1.问题
需求报障,it商城搜索页右边热卖商品样式错乱,浏览器显示js报错
2.调查
经过fireox的firebug js调试工具查看所得,原因是
//循环N次生成随机数
for(var i = 0 ; ; i++){
// 只生成8个0~19的随机数
if(array.length<8){
generateRandom(19);
}else{
break;
}
}
这个写法在热卖商品数量大于20时没有问题,所以一直没有报错,但是今日热卖商品只有11个,导致热卖商品的js数组下标越界,所以显示不出来,从而样式变形。
3.需要注意的地方
这种写法有个问题就是不能保证会不会数组越标,以后遇到这样的问题要注意,不能单纯填个数字上去,一定要多多考虑各种情况。
4.解决
修改代码,程序需要的结果是要随机热卖商品,所以我选择直接随机热卖商品的数组,代码如下:
var rand1 = 0;
var rand2 = 0;
var size = ${hotSellProductSize>0?hotSellProductSize:0};
for(var i = 0; i < size; i++){
rand1 = parseInt(Math.random() * size);
rand2 = parseInt(Math.random() * size);
var temp = hotSellArray[rand1];
hotSellArray[rand1] = hotSellArray[rand2];
hotSellArray[rand2] = temp;
}
5.意外问题
更新的时候,代码已经更新了,但是页面仍然没有变化,后来问林浩,是resin的url有缓存机制,要重启才可以清掉,这种机制有力有弊,好处就是减轻访问的压力,不好的地方就是更新的时候必须重启,可能会影响用户访问。
6.延伸思考
究竟有木有机制可以令服务器一检测到有文件更新,就立即清掉对应url的resin的缓存,我相信是有的
Change History
Note: See
TracTickets for help on using
tickets.
![(please configure the [header_logo] section in trac.ini)](http://www1.pconline.com.cn/global/2008/images/jss/m_logo091125.jpg)