从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. PA模块报错-实际返回的行数超出请求的行数(分析标准FORM报错解决思路)

    录入预算报错时报错: 分析:这个错误是select into 语句返回多行的结果,但具体在哪? 两种方法查找,trace 或者debug 1.trace 启用调试 获取trace文件 -bash-3. ...

  2. Android读取/dev/graphics/fb0 屏幕截图

    Android屏幕截图有很多方式这里只使用其中一种截图 主要是读取/dev/graphics/fb0,进行转换,复杂点就在如何把读取的数据进行转换. 可以参考一下这篇文章:http://blog.ch ...

  3. TensorFlow安装配置,茫茫人海中一瞥

    深度学习的框架,我们熟知的有caffe,torch和convnet.最近,Google又搞了一个TensorFlow,已经开源:http://www.tensorflow.org/.据说,谷歌的深度学 ...

  4. Ajax分页 Spring MVC + Hibernate

    效果图: 1.  添加公共类.方法.代码 1.    分页类:Page.java package cn.com.aperfect.sso.base.dao; import java.util.Arra ...

  5. 【一天一道LeetCode】#66. Plus One

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...

  6. Html.java 存储页面信息类

    Html.java 存储页面信息类 package com.iteye.injavawetrust.miner; /** * 存储页面信息类 * @author InJavaWeTrust * */ ...

  7. VB.NET版机房收费系统---异常处理

    异常处理,英文名为Exceptional Handling, 那时年少,还记得那年一起学习过的VB6.0的时候,常常使用ONError的错误语句.与传统VB6.0中的OnError语句相比.NET平台 ...

  8. 【一天一道LeetCode】#60. Permutation Sequence.

    一天一道LeetCode系列 (一)题目 The set [1,2,3,-,n] contains a total of n! unique permutations. By listing and ...

  9. volatile和synchronized的区别和联系

    volatile 它所修饰的变量不保留拷贝,直接访问主内存中的.   在Java内存模型中,有main memory,每个线程也有自己的memory (例如寄存器).为了性能,一个线程会在自己的mem ...

  10. ConcurrentHashMap和HashTable的区别

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