Skip to content

Instantly share code, notes, and snippets.

@czy88840616
Last active December 15, 2015 17:49
Show Gist options
  • Save czy88840616/5299270 to your computer and use it in GitHub Desktop.
Save czy88840616/5299270 to your computer and use it in GitHub Desktop.
assets代理需求描述

需求调查

用于在前段开发阶段或者调试阶段进行快速处理assets的工具

基本的功能为:

  • 代理本地Assets
  • 代理URL资源

其他可能会用到的额外辅助功能:

  • 自动修改host
  • 传输文件到服务器
  • 清除dns/brower cache
  • 编码处理
  • combo url处理
  • 淘宝assets路径规则化

需求确定

目前代理功能可以分为客户端和服务器端两部分,第一阶段先做客户端

客户端

  • 代理功能
    • 简单普通URL到本地文件/目录
    • 代理到其他URL
    • 支持js(.js, .coffee) css(.css, .sass, .scss, .less) 图片(.ico, .png, .jpg, jpeg, .gif, .bmp, .swf)
    • 支持combo
  • DEF接入
    • http/npm接口
    • 自动添加淘宝规则

服务端

待定

功能描述

客户端具体功能描述

功能 描述
配置界面 尽可能的简单易用,目前考虑的只有规则列表(首页)、添加规则(列表的层)、访客界面3个部分
用户规则 包含规则组、单条规则、全局规则。用户在主界面中添加规则,普通规则由一条匹配内容和一条替换内容组成,匹配规则支持正则,替换规则支持本地和线上路径,也支持单纯的字符替换。在规则上还应该支持规则的拷贝、删除、编辑功能。而规则组在列表展现上和单条规则一样(可能icon不同),普通规则也可以看成规则组的特殊形式,但是编辑添加时会不同。每一次请求只会被一条规则组处理,处理过后则跳出规则匹配。规则按列表顺序执行。
解决方案 一个包含多个规则组的规则集合定义为解决方案,可以有多套解决方案存在,每套解决方案允许不同的用户使用,解决方案也应该允许拷贝、编辑和删除。
DEF接入 DEF接入时,一个解决方案对应一个task,解决方案跟着任务走,同时界面上不会显示出多套解决方案。

客户端原型图

方案1 方案1 新方案 新方案 dashboard设计 新方案

技术方案

@czy88840616
Copy link
Author

碰到几个细节问题:

  1. assets代理时需要替换域名为ip来防止死循环,这个细节是不希望用户去做的,目前的方案是有个远程服务或者列表去找对应的ip,如果异常的时候如何处理
  2. 代理规则的处理,有几个小点
    • 解决方案中规则的执行顺序,匹配到一个规则就放弃匹配其他规则
    • 一个规则中,代理后的文件不存在,是取原本的线上文件还是404
    • combo的url中,如果有一个404,其他的怎么办

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment