从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. OLAP工作的基本概念(结合个人工作)

    OLTP和OLAP 传统的数据库系统都是OLTP,只能提供数据原始的操作.不支持分析工作. OLTP系统::执行联机事务和查询处理.一般超市进销存系统,功能:注册,记账,库存和销售记录等等, OLAP ...

  2. 《java入门第一季》之根据小案例体会泛型

    泛型在哪些地方使用呢? * 看API,如果类,接口,抽象类后面跟的有<E>就说要使用泛型.一般来说就是在集合中使用. 下面根据案例,加深体会泛型的作用. 案例一: import java. ...

  3. tar 压缩和解压缩使用笔记

    tar 压缩和解压缩使用笔记 1 文件 1.1 打包 1.1 压缩 $ tar czf myfile.txt.tar.gz ./myfile.txt 1.2 解压缩 解压缩到目录: $ mkdir o ...

  4. 海量数据挖掘MMDS week2: 局部敏感哈希Locality-Sensitive Hashing, LSH

    http://blog.csdn.net/pipisorry/article/details/48858661 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...

  5. input驱动12种事件类型Event types的含义

    linux2.6 input subsystem中部分相关结构体的分析  最近在做linux2.6的键盘驱动程序的工作,接触到了input subsystem这一概念,现把我对其中相关结构体的理解写出 ...

  6. Python学习笔记 - list和tuple

    demo 1 #!/usr/bin/env python3 # -*- coding: utf-8 -*- >>> classmates = ['Michael', 'Bob', ' ...

  7. CentOS安装并设置MariaDB

    作者: 铁锚 日期: 2013年12月27日 部分参考: Centos 使用YUM安装MariaDB 说明: 首先必须能链接外网. 如果不能直接访问,那也可以设置代理,请参考: 在内网机器上设置yum ...

  8. 干掉头疼的finished with non-zero exit value 2

    很多次会出现 finished with non-zero exit value 2  . Error:Execution failed for task ':app:dexDebug'. > ...

  9. (十八)TableView实践(多组汽车品牌展示)

    对于多组数据,可能会用到模型的嵌套. 例如多组汽车,每组是一个模型,组内有多辆车的信息,每辆车的信息也是一个模型,相当于模型中有模型. 可以看到,每个item是一个字典,这要创建一个模型,而模型内部的 ...

  10. hadoop namenode格式化问题汇总

    hadoop namenode格式化问题汇总 (持续更新) 0 Hadoop集群环境 3台rhel6.4,2个namenode+2个zkfc, 3个journalnode+zookeeper-serv ...