惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
博客园 - Franky
V
V2EX
Last Week in AI
Last Week in AI
H
Help Net Security
J
Java Code Geeks
WordPress大学
WordPress大学
阮一峰的网络日志
阮一峰的网络日志
Hugging Face - Blog
Hugging Face - Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
A
About on SuperTechFans
月光博客
月光博客
腾讯CDC
小众软件
小众软件
罗磊的独立博客
D
Docker
V
Visual Studio Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
Spread Privacy
Spread Privacy
博客园 - 叶小钗
F
Full Disclosure
Recent Announcements
Recent Announcements
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
L
LangChain Blog
T
The Exploit Database - CXSecurity.com
宝玉的分享
宝玉的分享
美团技术团队
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
L
LINUX DO - 热门话题
博客园 - 三生石上(FineUI控件)
T
Tailwind CSS Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
S
Securelist
Latest news
Latest news
Project Zero
Project Zero
T
Threat Research - Cisco Blogs
NISL@THU
NISL@THU
K
Kaspersky official blog
O
OpenAI News
T
Tenable Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Cyberwarzone
Cyberwarzone
Vercel News
Vercel News
有赞技术团队
有赞技术团队
P
Proofpoint News Feed
爱范儿
爱范儿
B
Blog RSS Feed
U
Unit 42

博客园 - James.H.Fu

PMS-授权中心 如何从现有版本1.4.8升级到element UI2.0.11 Maven私有仓库: 发布release版本报错:Return code is: 400, ReasonPhrase: Repository does not allow upd ating assets: maven-releases. spring boot + dubbo开发遇到过的异常 java,javascript中的url编码 SpringBoot favicon.ico SpringBoot 异常处理 spring boot 跨域请求 在centos 7上安装BIMServer maven 单独构建多模块项目中的单个模块 MongoDB 安装及副本集简单操作 spring-boot dubbo项目使用docker方式部署 Spring Boot和Dubbo整合 springboot 定制错误页面 Maven私有仓库-使用docker部署Nexus - James.H.Fu - 博客园 centos7 sentry部署指南 静态文件服务器部署指南 开始使用ansible 2016工作总结
2016项目开发经验总结及后续计划 - James.H.Fu - 博客园
James.H.Fu · 2017-01-11 · via 博客园 - James.H.Fu

目录

关于SEO

  • 开发过程中一般会规划几个环境,比如dev,qa,pre,prd-test,prd,其中我们的pre比较特殊,会公开到外网的一个域名用于培训。在开发初期,完全没有考虑SEO相关的事情。pre环境的网页不应该被搜索引荐收录。可是我们没有处理,导致用户搜索到了,给用户带来了一些不便。

  • 因此,我们在开发阶段就应该考虑这些事情。增加robots.txt文件

    dev, qa, pre配置

    User-agent: *
    Disallow: /
    

    prd-test, prd配置

    User-agent:*
    Allow:/
    Disallow:/Content/
    

关于Cookie

  • Cookie的值应该尽量小,我们的值已经超过1K了,这个要想办法优化...
  • 强制Cookie过期时要设置的合理一些,一个队友把过期时间设置为DateTime.Now.AddSeconds(-1),由于服务器时间和用户机器的时候存在差异,导致Cookie在那个间隔内没有失效。

关于登录

  • 使用成熟的FormsAuthentication
  • 用当前登录帐号(LoginName)缓存登录信息,需要考虑负载均衡的场景:比如在A服务器上登录,下个请求可能又到了B服务,那么要考虑服务器的本地缓存如何失效。我们采用的是用登录状态中的时间戳来解决缓存失效问题。
  • 在负载均衡的场景中要将所有服务配置相同的MachineKey,否则在A服务器登录后,下个请求到了B服务器,如果MachineKey不同的话,带过来的Cookie无法解密,就无法恢复登录状态。
  • LoginName必须全局唯一。
  • 登录状态要尽量小,否则在恢复登录状态时,需要频繁地解密等,会导致性能问题。
  • 只允许在Controller层使用登录状态,不允许在Service层使用登录状态。因为在登录状态需要HttpContext的支持,在服务层使用多线程时,就没有HttpContext就无法恢复登录状态。所以登录状态最好从上层的Controller层传递到Service层。

关于前端

  • 前后端还是没有分离
  • 组件化思想还是没有贯彻
  • 规范了在View层不允许写C#代码
  • 全面使用knockoutjs,少量场景继续使用jquery
  • 下一步准备使用requirejs进行组件化/模块化开发

项目部署结构

项目部署结构

  • 目前每天的PV接近20W,还在不断上升
  • 主要有六个产品线
  • 所有产品线使用统一的授权平台AuthCenter
  • 所有产品线使用https部署

项目分层结构

Web 项目分层结构

Web API 项目分层结构

Job Console

  • 公司处于创业期,根据我们的业务场景选用最简单的三层结构
  • 各层必须界限分明,不允许滥用每层的职责
  • 数据访问层:只允许有数据访问及少量相关逻辑。
  • 服务层:负责业务计算,数据缓存等逻辑。
  • Controller:只允许服务调用获取Model,计算Model或视图状态,输出缓存等相关逻辑
  • View:只允许使用ViewBag接收Controller层中计算好的状态,不允许在视图引擎层书写C#代码。

项目主要使用到的技术

  • asp.net mvc 4.6.2
  • asp.net wep api 2.0
  • jquery
  • knockoutjs
  • vuejs 2.0+vue router 2.0+webpack 2.0
  • nginx
  • redis
  • solr
  • zabbix
  • mysql

——致力于微软企业解决方案、项目管理及技术培训

posted on 2017-01-11 16:51  James.H.Fu  阅读(481)  评论()    收藏  举报