从2017年9月18号,我开始独立做C游新官网项目。第一次独立完成项目,压力还是挺大的,毕竟还要自己去写前端,前端我已经忘了差不多了。

   做这个网站主要是公司开始转型,开始自己建立渠道倒量,这样网站的SEO优化就很重要了。原来官网是跑脚本5分钟一次生成所有站点的全静态网页,但是这样对磁盘的消耗比较大,而且某些访问量较小的代理站点也要为其生成页面,这样就造成了不必要的性能消耗。另外,新官网有评论回复,盖楼等交互,比较多的详情页,详情页是肯定做不了静态化的了,而且原来域名解析只会解析到对应代理静态页面的文件夹下面,这样在请求接口的时候就会造成不便,而且,访问纯静态页面的时候,layer弹出层会有问题。

   综上所述,就选择了传统的页面渲染方式,数据则读取cache和DB。用户权限接口全部调用现有的。接口域名是不同域名的,这里就有一个ajax跨域问题,请求接口之后会发放名为cyauth的cookie,用来记录用户登录状态,这样jsonp就做不了了,所以选用了nginx代理,这样就可以保持session一致,但是发放的cyauth只是用json字符串base64编码了一下,但是我觉得不够安全,所以在登录和注册请求之后请求自身站点发放一个token用来验证登录,结果也证明我的选择是正确的,因为登录注册发放的cyauth过期时间太长了,足足一年时间,而我自定义的token过期时间设置为7天,只要过期或者伪造cyauth或者token了,程序就把所有cookie清除,后面还加了一个实名验证的需求,在用户登录之后弹窗让其实名,这样就把业务连贯起来了。

   开始因为设计图还没有出,所以我先把要用的接口都准备好,这个时间倒是挺快的,一两个礼拜就完成了,然后设计图也出的差不多了。在国庆回来之后就开始做静态页了。

   后端接口的进度让我对整个项目的完成预估有了不切实际的幻想。在开始做静态页的时候就击碎了。一个首页让我做了7天,是工作日,而不是自然日。虽然后面页面的进度相对快了不少,但其实问题还是不少的(到上线前一天还在调试轮播图,因为是手撸的轮播图,比较好调试,而且貌似性能会好一点)。在做的时候我没注意浏览器兼容性问题,用了不少CSS3,如border-radius,rotate。像chrome跟FF之间的差异还是会有不少差异,那么零点几个像素的区别,还有CSS3的解析问题。但还好,chrome,FF,QQ等正常的浏览器战友的市场份额比较多,不用做过多的向下兼容,像IE,IE8,IE7和IE6之间的差异都非常大,页面放上去完全不能看。后来我看了下,腾讯的网站完美兼容了IE,而像知乎比较新的网站就完全没做兼容,大概是没什么历史包袱吧。

   页面完成之后就要填充数据了,从这时开始就要把之前自己挖的一些坑给填上。很多接口我在做之前没有考虑清楚,导致会出现不少逻辑错误。另外,由于需要加缓存,很多获取数据的方法都需要调整,这就是没有预先制定好缓存策略的坑。还有在页面获取分页数据的时候,页面逻辑相对来说比数据逻辑还要稍微复杂一些,所以页面变动经常出bug,这也跟我使用js生成HTML追加到页面这样的方法有一定关系。如果以后页面有变动,那么久需要改两处地方了,比较麻烦,最主要是我不会js框架。。。

   用户的权限验证一般都会放在父类控制器中完成,但不是所有的接口和页面都需要进行权限验证,这里就需要传参或者区别处理了。我最开始是不区分,直接所有请求都进行权限验证,但这其实是一种性能的浪费,后面修修改改几次才改好。

   不管怎样,现在项目上线了,总算是独立完成了一个不小的项目。总结起来,做项目还是要好好分析需求,尽可能预计出所有项目完成过程中可能出现的情况和以后改版可能出现的需要增加和改动,做出合理的代码设计,代码逻辑考虑要周全,程序要健壮和容易维护,可读性要强,然后才去考虑性能的问题。不过web项目都是IO密集,对程序的运算性能要求不高,所以做好缓存,限流还有降级就差不多了(降级暂时还不会)。

C游新官网总结的更多相关文章

  1. 一个让我很不爽的外包项目——奔驰Smart2015新官网

    七月份的下半个月,有幸做了奔驰 Smart 2015年新官网,包括手机端和PC端的宣传页,地址: PC端 手机端 这里,为了证明这个是一个事实,我还特意的留存了两张截图: 这里只想说明这么几个问题: ...

  2. 开源项目 PM 浅谈如何设计官网

      有用户反馈进入官网首页光秃秃的一片,大家忙着做产品,忽略了官网的建设,惭愧惭愧.   确实,极简风格和极其简单还是有很大区别的.     旧的 Web 端   除了极其简单之外,它还有一个小问题, ...

  3. Web程序设计基础期末大作业——模仿QQ飞车手游S联赛官网编写的网页

    QQ飞车手游是我非常喜欢的游戏,也是我现在为数不多的常在玩的游戏,刚好我Web程序设计基础的大作业是要做一套网站,我就借此机会模仿飞车S联赛官网的页面自己做了一个网页,又加了一些自己的元素,由于我做这 ...

  4. K2新网站(官网和BPM社区)正式上线了

    K2新网站(官网和BPM社区)正式上线了 K2新网站(官网和BPM社区)正式上线了 K2新网站(官网和BPM社区)正式上线了 通常重要的事情要讲三遍, 官网:www.k2software.cn 社区: ...

  5. 个人官网第8次升级(新功能、用户体验、修复bug、系统优化)

    1.新功能. 操作日志和搜索日志的Excel报表下载. 2.用户体验. 如果是通过搜索,进入到一篇内容, 搜索关键词需要高亮. 比如,搜索"程序员"出现若干内容链接,打开链接的页面 ...

  6. KEIL建立新唐MCU的工程时,移植官网程序报错变量未定义问题解决方法

    最近在使用新唐的MCU,新唐的MCU使用还算方便,你安装好KEIL之后再安装 Nu-Link_Keil_Driver_V3.00.6909 驱动即可建立新唐的MCU工程,注意的是因为新唐MCU是C51 ...

  7. iOS开发——开发者官网注册新设备

    1.第一步登陆苹果开发者中心官网,进入证书栏后如下图:点击All 或者如果是iPhone设备直接点击iPhone也行. 然后点击右上角的[+]号

  8. 巧用百度Site App新组件为企业官网打造移动站

    一年前我曾经详细介绍过百度Site App,时隔一年的发展,Site App再一次发生了翻天覆地的变化:自定义程度更高.新增电话地图组件.增加流量统计.增加广告管家.生成APP客户端等功能,百度Sit ...

  9. 美和易思 · 「云农职互联网技术学院」HTML+CSS 做西普尼金表官网

    假期作业,好久没碰了,代码写得很烂......写博客纯属记录! 源代码下载地址:https://download.csdn.net/download/weixin_44893902/12805555 ...

随机推荐

  1. 从Linux启动过程到android启动过程

    Linux启动过程: 1.首先开机给系统供电,此时硬件电路会产生一个确定的复位时序,保证cpu是最后一个被复位的器件.为什么cpu要最后被复位呢?因为 如果cpu第一个被复位,则当cpu复位后开始运行 ...

  2. ConcurrentHashMap和HashTable的区别

    hashtable是做了同步的,hashmap未考虑同步.所以hashmap在单线程情况下效率较高.hashtable在的多线程情况下,同步操作能保证程序执行的正确性. 但是hashtable每次同步 ...

  3. Mahout决策森林

    Mahout决策森林算法 一.决策树 决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法 ...

  4. OpenCV特征点检测算法对比

    识别算法概述: SIFT/SURF基于灰度图, 一.首先建立图像金字塔,形成三维的图像空间,通过Hessian矩阵获取每一层的局部极大值,然后进行在极值点周围26个点进行NMS,从而得到粗略的特征点, ...

  5. 《java入门第一季》之面向对象综合小案例

    需求: /*     教练和运动员案例         乒乓球运动员和篮球运动员.         乒乓球教练和篮球教练.         跟乒乓球相关的人员都需要学习英语.         分析,这 ...

  6. 青年之锋文学网( www.xcqnzf…

    青年之锋文学网( www.xcqnzf.com )简介: 青年之锋文学网创建于2013年秋,是河南农业大学(应用科技学院)--青年之锋文学社的官方网站,网站以长篇写作和出版校刊为主题,短篇精彩丰富为中 ...

  7. PHP 与搜索蜘蛛

    本文移到:http://www.phpgay.com/Article/detail/classid/2/id/63.html

  8. Gradle 1.12用户指南翻译——第二十三章. Java 插件

    其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...

  9. Linux本地网络脚本配置(内网与外网)

    脚本位于:     /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 //网卡的名字 BOOTPROTO=static // none静态IP ...

  10. 安卓TV开发(八) 移动智能终端多媒体爬虫技术 获取加载网页视频源

    转载请标明出处:http://blog.csdn.net/sk719887916/article/details/40049137,作者:skay 从上一篇学习中,学习了多媒体技术中的怎么去用josu ...