C游新官网总结
从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游新官网总结的更多相关文章
- 一个让我很不爽的外包项目——奔驰Smart2015新官网
七月份的下半个月,有幸做了奔驰 Smart 2015年新官网,包括手机端和PC端的宣传页,地址: PC端 手机端 这里,为了证明这个是一个事实,我还特意的留存了两张截图: 这里只想说明这么几个问题: ...
- 开源项目 PM 浅谈如何设计官网
有用户反馈进入官网首页光秃秃的一片,大家忙着做产品,忽略了官网的建设,惭愧惭愧. 确实,极简风格和极其简单还是有很大区别的. 旧的 Web 端 除了极其简单之外,它还有一个小问题, ...
- Web程序设计基础期末大作业——模仿QQ飞车手游S联赛官网编写的网页
QQ飞车手游是我非常喜欢的游戏,也是我现在为数不多的常在玩的游戏,刚好我Web程序设计基础的大作业是要做一套网站,我就借此机会模仿飞车S联赛官网的页面自己做了一个网页,又加了一些自己的元素,由于我做这 ...
- K2新网站(官网和BPM社区)正式上线了
K2新网站(官网和BPM社区)正式上线了 K2新网站(官网和BPM社区)正式上线了 K2新网站(官网和BPM社区)正式上线了 通常重要的事情要讲三遍, 官网:www.k2software.cn 社区: ...
- 个人官网第8次升级(新功能、用户体验、修复bug、系统优化)
1.新功能. 操作日志和搜索日志的Excel报表下载. 2.用户体验. 如果是通过搜索,进入到一篇内容, 搜索关键词需要高亮. 比如,搜索"程序员"出现若干内容链接,打开链接的页面 ...
- KEIL建立新唐MCU的工程时,移植官网程序报错变量未定义问题解决方法
最近在使用新唐的MCU,新唐的MCU使用还算方便,你安装好KEIL之后再安装 Nu-Link_Keil_Driver_V3.00.6909 驱动即可建立新唐的MCU工程,注意的是因为新唐MCU是C51 ...
- iOS开发——开发者官网注册新设备
1.第一步登陆苹果开发者中心官网,进入证书栏后如下图:点击All 或者如果是iPhone设备直接点击iPhone也行. 然后点击右上角的[+]号
- 巧用百度Site App新组件为企业官网打造移动站
一年前我曾经详细介绍过百度Site App,时隔一年的发展,Site App再一次发生了翻天覆地的变化:自定义程度更高.新增电话地图组件.增加流量统计.增加广告管家.生成APP客户端等功能,百度Sit ...
- 美和易思 · 「云农职互联网技术学院」HTML+CSS 做西普尼金表官网
假期作业,好久没碰了,代码写得很烂......写博客纯属记录! 源代码下载地址:https://download.csdn.net/download/weixin_44893902/12805555 ...
随机推荐
- pig运行方法:本地与云上
pig脚本 放在本地当前目录(键入pig命令时,所处的目录),然后用进入grunt,用run或者exec调用 1云运行: 键入pig进入grunt,用run命令运行当前目录脚本.(或者外部用pig - ...
- byte和长度为8的boolean数组互相转换
由于byte是一个8位字节 所以可以用它来存放数组为8的boolean数组,这些在通信协议会经常用到.这里给出一个java代码对其互相转换的. package com.udpdemo.test2; i ...
- iOS 远程消息推送,原理和开发详解篇(新手推荐)
1.APNS的推送机制 首先我们看一下苹果官方给出的对ios推送机制的解释.如下图 Provider就是我们自己程序的后台服务器,APNS是Apple Push Notification Servic ...
- Guava 教程(3):Java 的函数式编程,通过 Google Collections 过滤和调用
原文出处: oschina 在本系列博客的第一.二部分,我介绍了非常优秀的Google Collections和Guava包.本篇博客中我们来看看如何使用Google Collections来做到过滤 ...
- 索引构建情况分析、mongoDB安全(四)
索引好处:加快索引相关的查询 坏处:增加磁盘空间消耗,降低写入性能 评判当前索引构建情况: 1. mongostat工具介绍 2. profile集合介绍 3. 日志介绍 ...
- 敏捷测试(3)--基于story的敏捷基础知识
基于story的敏捷基础知识----story编写 为什么使用Story? 软件行业40年多来,需求分析技术已经很成熟了,但是MRD驱动的过程不堪重负.因为往往MRD编写会占去很多时间,MRD评审又会 ...
- 【Unity Shaders】Diffuse Shading——创建一个基本的Surface Shader
本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...
- Android进阶(十六)子线程调用Toast报Can't create handler inside thread that has not called Looper.prepare() 错误
原子线程调用Toast报Can't create handler inside thread that has not called Looper.prepare() 错误 今天用子线程调Toast报 ...
- [WinForm]动态显示本地目录图片与悬浮窗
加载显示: if (File.Exists(@"D:\产品图片\" + item + ".jpg")) { //需要判断是否存在图片 Image img = I ...
- android 面试之listview
ListView优化一直是一个老生常谈的问题,不管是面试还是平常的开发中,ListView永远不会被忽略掉,那么这篇文章我们来看看如何最大化的优化ListView的性能.· 1.在adapter中的g ...