Authored by hf

add channel and guang page cache

@@ -39,18 +39,20 @@ class DetailData @@ -39,18 +39,20 @@ class DetailData
39 39
40 // 客户端类型 40 // 客户端类型
41 $clientType = $isApp ? 'iphone' : 'h5'; 41 $clientType = $isApp ? 'iphone' : 'h5';
42 - $key = CacheConfig::KEY_ACTION_GUANG_DETAIL_DATA . strval($id); 42 + $key = CacheConfig::KEY_ACTION_GUANG_DETAIL_DATA . strval($id) . $clientType;
  43 +
  44 + if (USE_CACHE) {
  45 + // 先尝试获取二级缓存(slave), 有数据则直接返回.
  46 + $cached = Cache::get($key, 'master');
  47 + if (!empty($cached)) {
  48 + return $cached;
  49 + }
  50 + }
  51 + return $result;
43 52
44 // 获取资讯 53 // 获取资讯
45 $article = Yohobuy::yarClient(Yohobuy::SERVICE_URL . self::URI_PACKAGE_ARTICLE, 'getArticle', array($id, $clientType), false, 1000); 54 $article = Yohobuy::yarClient(Yohobuy::SERVICE_URL . self::URI_PACKAGE_ARTICLE, 'getArticle', array($id, $clientType), false, 1000);
46 if (!isset($article['author_id'])) { 55 if (!isset($article['author_id'])) {
47 - if (USE_CACHE) {  
48 - // 先尝试获取二级缓存(slave), 有数据则直接返回.  
49 - $result = Cache::get($key, 'slave');  
50 - if (!empty($result)) {  
51 - return $result;  
52 - }  
53 - }  
54 return $result; 56 return $result;
55 } 57 }
56 $result['getArticle'] = $article; 58 $result['getArticle'] = $article;
@@ -80,8 +82,15 @@ class DetailData @@ -80,8 +82,15 @@ class DetailData
80 // 调用发起请求 82 // 调用发起请求
81 Yohobuy::yarConcurrentLoop(); 83 Yohobuy::yarConcurrentLoop();
82 84
83 - if (USE_CACHE && !empty($result['getArticle'])) {  
84 - Cache::set($key, $result); 85 + if (USE_CACHE) {
  86 + // 接口调用异常时, 不害怕,从我们的二级缓存(slave)里再取数据.
  87 + if (empty($result)) {
  88 + $result = Cache::get($key, 'slave');
  89 + }
  90 + // 接口调用正常,数据封装完成, 则设置一级(master)和二级(slave)数据缓存
  91 + elseif (!empty($result['getArticle']) && !empty($result['getArticleContent'])) {
  92 + Cache::set($key, $result);
  93 + }
85 } 94 }
86 95
87 return $result; 96 return $result;
@@ -66,7 +66,7 @@ class ListData @@ -66,7 +66,7 @@ class ListData
66 } 66 }
67 $param['client_secret'] = Sign::getSign($param); 67 $param['client_secret'] = Sign::getSign($param);
68 68
69 - return Yohobuy::get(Yohobuy::SERVICE_URL . self::URI_ARTICLELIST, $param); 69 + return Yohobuy::get(Yohobuy::SERVICE_URL . self::URI_ARTICLELIST, $param, 1800); // 缓存30分钟
70 } 70 }
71 71
72 /** 72 /**
@@ -20,6 +20,7 @@ use LibModels\Wap\Product\SearchData; @@ -20,6 +20,7 @@ use LibModels\Wap\Product\SearchData;
20 */ 20 */
21 class PlusstarData 21 class PlusstarData
22 { 22 {
  23 +
23 const URI_BRANDLIST = 'guang/api/v1/plustar/getlist'; 24 const URI_BRANDLIST = 'guang/api/v1/plustar/getlist';
24 const URI_BRANDINFO_PLUSSTAR = 'guang/service/v1/plustar/'; 25 const URI_BRANDINFO_PLUSSTAR = 'guang/service/v1/plustar/';
25 const URI_BRANDINFO_FAVORITE = 'shops/service/v1/favorite/'; 26 const URI_BRANDINFO_FAVORITE = 'shops/service/v1/favorite/';
@@ -126,30 +127,34 @@ class PlusstarData @@ -126,30 +127,34 @@ class PlusstarData
126 $result['getUidProductFav'] = array(); 127 $result['getUidProductFav'] = array();
127 $result['getArticleByBrand'] = array(); 128 $result['getArticleByBrand'] = array();
128 129
129 - $key = CacheConfig::KEY_ACTION_GUANG_PLUSTAR_DATA . strval($id); 130 + // 客户端类型
  131 + $clientType = $isApp ? 'iphone' : 'h5';
  132 + $key = CacheConfig::KEY_ACTION_GUANG_PLUSTAR_DATA . strval($id) . $clientType;
  133 +
  134 + if (USE_CACHE) {
  135 + // 先尝试获取二级缓存(slave), 有数据则直接返回.
  136 + $cached = Cache::get($key, 'master');
  137 + if (!empty($cached)) {
  138 + return $cached;
  139 + }
  140 + }
  141 + return $result;
130 142
131 // 品牌详情信息 143 // 品牌详情信息
132 $brandInfo = Yohobuy::yarClient(Yohobuy::SERVICE_URL . self::URI_BRANDINFO_PLUSSTAR, 'getBrandInfo', array(array('id' => $id)), 3600); // 缓存1小时 144 $brandInfo = Yohobuy::yarClient(Yohobuy::SERVICE_URL . self::URI_BRANDINFO_PLUSSTAR, 'getBrandInfo', array(array('id' => $id)), 3600); // 缓存1小时
133 if (!isset($brandInfo['data']['brand_id'])) { 145 if (!isset($brandInfo['data']['brand_id'])) {
134 - if (USE_CACHE) {  
135 - // 先尝试获取二级缓存(slave), 有数据则直接返回.  
136 - $result = Cache::get($key, 'slave');  
137 - if (!empty($result)) {  
138 - return $result;  
139 - }  
140 - }  
141 return $result; 146 return $result;
142 } else { 147 } else {
143 $result['getBrandInfo'] = $brandInfo; 148 $result['getBrandInfo'] = $brandInfo;
144 } 149 }
145 150
146 - // 是否收藏店铺  
147 - $isUidOk = $uid && is_numeric($uid);  
148 - if ($isUidOk) {  
149 - Yohobuy::yarConcurrentCall(Yohobuy::SERVICE_URL . self::URI_BRANDINFO_FAVORITE, 'getUidBrandFav', array($uid, $brandInfo['data']['brand_id']), function($retval) use(&$result) {  
150 - $result['getUidBrandFav'] = (isset($retval['message']) && $retval['message'] == 'favorite') ? true : false;  
151 - });  
152 - } 151 +// // 是否收藏店铺
  152 +// $isUidOk = $uid && is_numeric($uid);
  153 +// if ($isUidOk) {
  154 +// Yohobuy::yarConcurrentCall(Yohobuy::SERVICE_URL . self::URI_BRANDINFO_FAVORITE, 'getUidBrandFav', array($uid, $brandInfo['data']['brand_id']), function($retval) use(&$result) {
  155 +// $result['getUidBrandFav'] = (isset($retval['message']) && $retval['message'] == 'favorite') ? true : false;
  156 +// });
  157 +// }
153 158
154 // 相关资讯列表 (3篇) 159 // 相关资讯列表 (3篇)
155 $result['getArticleByBrand'] = array(); 160 $result['getArticleByBrand'] = array();
@@ -179,7 +184,7 @@ class PlusstarData @@ -179,7 +184,7 @@ class PlusstarData
179 $condition['limit'] = 6; 184 $condition['limit'] = 6;
180 $condition['order'] = 's_t_desc'; 185 $condition['order'] = 's_t_desc';
181 $newProduct = SearchData::searchElasticByCondition($condition, 1800); // 有缓存30分钟 186 $newProduct = SearchData::searchElasticByCondition($condition, 1800); // 有缓存30分钟
182 - 187 +
183 if (empty($newProduct['data']['product_list'])) { 188 if (empty($newProduct['data']['product_list'])) {
184 break; 189 break;
185 } 190 }
@@ -202,11 +207,11 @@ class PlusstarData @@ -202,11 +207,11 @@ class PlusstarData
202 // 用户是否收藏该商品 207 // 用户是否收藏该商品
203 $skn = $value['product_skn']; 208 $skn = $value['product_skn'];
204 $result['getUidProductFav'][$skn] = false; 209 $result['getUidProductFav'][$skn] = false;
205 - if ($isUidOk) {  
206 - Yohobuy::yarConcurrentCall(Yohobuy::SERVICE_URL . self::URI_BRANDINFO_FAVORITE, 'getUidProductFav', array($uid, $value['product_skn']), function($retval) use(&$result, &$skn) {  
207 - $result['getUidProductFav'][$skn] = empty($retval['data']) ? false : $retval['data'];  
208 - });  
209 - } 210 +// if ($isUidOk) {
  211 +// Yohobuy::yarConcurrentCall(Yohobuy::SERVICE_URL . self::URI_BRANDINFO_FAVORITE, 'getUidProductFav', array($uid, $value['product_skn']), function($retval) use(&$result, &$skn) {
  212 +// $result['getUidProductFav'][$skn] = empty($retval['data']) ? false : $retval['data'];
  213 +// });
  214 +// }
210 215
211 $i ++; 216 $i ++;
212 } 217 }
@@ -215,11 +220,16 @@ class PlusstarData @@ -215,11 +220,16 @@ class PlusstarData
215 // 调用发起请求 220 // 调用发起请求
216 Yohobuy::yarConcurrentLoop(); 221 Yohobuy::yarConcurrentLoop();
217 222
218 - if (USE_CACHE && !empty($result['getBrandInfo'])) { 223 + if (USE_CACHE) {
  224 + // 接口调用异常时, 不害怕,从我们的二级缓存(slave)里再取数据.
  225 + if (empty($result)) {
  226 + $result = Cache::get($key, 'slave');
  227 + }
219 // 接口调用正常,数据封装完成, 则设置一级(master)和二级(slave)数据缓存 228 // 接口调用正常,数据封装完成, 则设置一级(master)和二级(slave)数据缓存
220 - Cache::set($key, $result); 229 + elseif (!empty($result['getBrandInfo'])) {
  230 + Cache::set($key, $result);
  231 + }
221 } 232 }
222 -  
223 return $result; 233 return $result;
224 } 234 }
225 235
@@ -3,6 +3,8 @@ @@ -3,6 +3,8 @@
3 use Action\AbstractAction; 3 use Action\AbstractAction;
4 use LibModels\Wap\Guang\ListData; 4 use LibModels\Wap\Guang\ListData;
5 use Plugin\Helpers; 5 use Plugin\Helpers;
  6 +use Plugin\Cache;
  7 +use Configs\CacheConfig;
6 8
7 /** 9 /**
8 * 逛首页、列表页、编辑页 10 * 逛首页、列表页、编辑页
@@ -264,5 +266,31 @@ class IndexController extends AbstractAction @@ -264,5 +266,31 @@ class IndexController extends AbstractAction
264 echo ' '; 266 echo ' ';
265 } 267 }
266 } 268 }
  269 +
  270 + /**
  271 + * @todo 清缓存
  272 + */
  273 + public function clearAction()
  274 + {
  275 + $type = $this->get('type');
  276 + switch (strval($type)) {
  277 + case 'boys':
  278 + Cache::delete(CacheConfig::KEY_ACTION_BOYS_INDEX);
  279 + break;
  280 + case 'girls':
  281 + Cache::delete(CacheConfig::KEY_ACTION_GIRLS_INDEX);
  282 + break;
  283 + case 'kids':
  284 + Cache::delete(CacheConfig::KEY_ACTION_KIDS_INDEX);
  285 + break;
  286 + case 'lifestyle':
  287 + Cache::delete(CacheConfig::KEY_ACTION_LIFESTYLE_INDEX);
  288 + break;
  289 + case 'bgimg':
  290 + Cache::delete(CacheConfig::KEY_ACTION_INDEX_INDEX);
  291 + break;
  292 +
  293 + }
  294 + }
267 295
268 } 296 }