惊闻京东居然是用asp.net做的,当然只是用户登录后的页面。(网页后缀为aspx),第一:为什么查看它的源文件,却没有见到任何asp.net的痕迹?比如注册页面:
https://passport.360buy.com/new/login.aspx
查看其源文件,并没有见到<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value=好长的base64字符串>这个东东?要知道,在aspx页面上,即使设置EnableViewState=false,其页面仍会有这个hidden的啊!京东的页面到底是怎么做到所这个hidden完全干掉的?第二:它的静态列表页是怎么做的?
比如:
CPU商品的i7系列的列表页:
http://www.360buy.com/products/670-677-678-0-7013-0-0-0-0-0-1-1-1.html
CPU商品的i5系列的列表页:
http://www.360buy.com/products/670-677-678-0-1376-0-0-0-0-0-1-1-1.html我们从中可以看出,.html前面那些长长的数字,是对应着每一个分类的各种筛选。
我们相信这些html是物理存在服务器的,而不是使用URL映射之类的伪静态(相信京东这么做的目的是为了提高页面访问速度,应该不是使用伪静态)可是这样,每添加一个商品,得更新多少html页面啊?
比如添加一个CPU上去,则CPU分类的所有分页必须更新,然后,按品牌、系列、价格区间、接口、核心的二级分类的所有列表页,也得更新一次!是不是这样做的呢?谢谢

解决方案 »

  1.   

    VIEWSTATE 可以禁用的,再说, 完全可以一点都不用asp.net提供的服务器端控件啊。
    生成静态页面思路大约有3种:
    1、向服务器的动态页面发送请求,获取页面的html代码。这种方法缺点显而易见:速度慢。另外如果请求的动态页面有验证控件的话,返回的html页面却无法进行数据
    2、从文件读取模版,替换模版中的参数后输出文件,这种方法的生成速度上比第一种要快许多,而且模版内容可以用工具任意编辑
    3、如果生成的文件数量比较多,第二种方法就要反复读取模版内容,这时可以用第三种方法——直接将你的模版写在代码中,原理是利用System.IO中的类读写模板文件,然后用Replace替换掉模板中的标签,写入静态html
    至于京东,商品等功能都是Asp.net做的吧,随便点击一个商品的网址  http://www.360buy.com/product/640706.html   就可以试出来的,如下图:
      

  2.   

    这个很简单。asp.net网站我们可以先简单分为“有回发、无回发”两种。对于无回发的网页,那么程序员创建一个aspx之后第一件事,是吧asp.net自动产生的 <form id="form1" runat="server"><div></div></form> 彻底删掉,根据html/javascript开发人员的习惯里编写网页。偶尔地,某些部分可能临时有<form></form>需要加上,但是这不是asp.net最初的那个大<form runat="server"></form>的概念了。这个不要乱说什么“不使用asp.net服务器控件”。例如Label、Repeater控件等等,你怎么知道不用?但是我要强调地是,这是面向媒体的网站网页,而不是企业web应用程序。假设你要使用asp.net开发交互式企业交易应用程序,那么当然还是要使用原来的asp.net模式。只不过这样,我们也还是立刻就看到了asp.net所作出的交互应用在界面操作刷新方面的级差的用户体验。asp.net由于其自身没有跟上ajax潮流这个问题(也就是微软的问题)而早已经失去了web前端开发方面的所见即所得的水平了,asp.net项目组最近几年靠整一些什么mvc概念也就是忽悠一些还对微软留有幻想的人。
      

  3.   

    对于第二个问题,如果你使用一个http调试器稍微看一下页面你就会发现,那样一个简单页面往往要下载70个js文件、好几个flash文件、50个gif文件、好几个jpeg文件、30个png文件、好几个css文件、20个html文件!什么意思呢?就是说这些html文件是按照ajax的理念来设计开发的,该变动的部分是动态地从浏览器端异步加载的,而剩下的只是一点骨架,这些骨架只需要每隔几天更新一次就够了。
      

  4.   

    20个html文件   -->  20个html、ashx等其它文件
      

  5.   


    首先兄说的很专业,我又学到东西了。
    但以这个CPU商品列表为例:http://www.360buy.com/products/670-677-678.html,该页面(其实所有商品列表页面都一样)每页共列出了9*4=36个商品,而这些商品的信息都是写在html页面中的,而不是只是一个骨架html,然后商品内容通过ajax动态加载。
    所以我才很疑惑:每添加/删除一个商品,得更新多少页面啊?(而且每个大类、二级分类的所有分页都必须重新生成!)
    以在卖的一款“英特尔(Intel)22纳米 酷睿i5 3450盒装CPU(LGA1155/3.1GHz/四核/6M三级缓存)”为例,它存于:
    CPU主分类总列表页:http://www.360buy.com/products/670-677-678.html
    品牌:英特尔(Intel):http://www.360buy.com/products/670-677-678-1310-0-0-0-0-0-0-1-1-1.html
    系列:酷睿i7:http://www.360buy.com/products/670-677-678-0-7013-0-0-0-0-0-1-1-1.html
    价格:1000-1999:http://www.360buy.com/products/670-677-678-0-0-1352-0-0-0-0-1-1-1.html
    接口:LGA 1155:http://www.360buy.com/products/670-677-678-0-0-1352-8578-0-0-0-1-1-1.html
    核心:四核:http://www.360buy.com/products/670-677-678-0-0-1352-0-1362-0-0-1-1-1.html
    以及上列所有分类的复合分类页中,比如
    http://www.360buy.com/products/670-677-678-1310-7013-1352-8578-1362-0-0-1-1-1.html也即:CPU分类又分为
    品牌:2项+不限 = 3种页面(下同);
    系列:12项
    价格:5项
    接口:8项
    核心:7项也就是说,每添加一个CPU商品,可能需要更新3*12*5*8*7+1=10081个列表,而且每个列表又分类多页,再乘以若干页,这个数量惊人啊!
      

  6.   


    每个类别都有模板的。录入的时候提前加载了通用数据了。
    CPU也就针脚为未必一样、频率、核心。
    京东的后台你看不到,淘宝的录入商品的页面可是公开的。
      

  7.   

    1. asp.net 只是实现网页开发的一种“工具”而已,你所说的viewstats什么的那些 是编译器在编译微软服务器控件时候生成的 。但是用asp.net不一定非要用服务器控件。不要把asp.net局限在控件上2.这个就是京东搜索块的逻辑了 。每个sku项应该都会对应生成后的一个html。
      

  8.   

    用asp.net做一个京东应该不算什么。
    第一:为什么查看它的源文件,却没有见到任何asp.net的痕迹。这个很有简单把<form runat="server"> 去掉就可以了。
    第二:它的静态列表页是怎么做的。asp.net的静态页方法很多了。比较典型的可以用UrlRewriter。
      

  9.   

    京东的 搜索页面地址:http://www.360buy.com/products/670-677-678-0-7013-0-0-0-0-0-1-1-1.html是用的url重写技术吗????? 还是其他技术??? 求解