如果只是做一个网站,相当的容易。一个有这基本电脑操作基础的人,经过1-2周的html和css的培训,就可以制作出来一个静态的HTML的页面,把这些页面部署到服务器端,就可以称得上网站了。当然这个网站要做的好的话,就少不了一些其他方面的知识来支持, 你不喜欢自己的网站很丑陋吧,这个时候你需要懂点美术知识,你不喜欢自己的网站干巴巴的吧,这个时候可能需要一些动画或者视频,这个时候你需要学习一些简单的js和flash技术。但是总体来说要做一个静态页面非常的容易,即便是一个业余的人经过一段时间的学习和练习总是能很轻松的学会的。(上述的一段时间不会超过2个月时间)。
网站出来了,你总不希望网站是几个网页,你可能想随时添加新闻,添加图片,然后还想跟用户在线的沟通和互动。这个时候你总不喜欢每次添加一个图片,或者一个新闻都自己去做一个网页,那样太复杂和繁琐了,而且每办法跟用户在线沟通,这个时候你要学习一个编程语言,把静态的网站编程动态的(这里的动态不是指的页面有没有动画,而是指的能不能互动,动态的添加信息)。这个时候你需要一门编程语言,以前使用C/C++来做CGI非常的复杂。随着技术的发展,编程语言越来越丰富,也越来越简单。你可以选择jsp, asp,php,python,asp.net等等其中的几个或者一个。他们中间各有各的优势,各有各的缺点,具体要选择哪个,你需要对他们都有一个简单的了解,或者随便选择一个都可以的。然后你需要把内容写到一个地方,一般我们使用数据库。这个时候你还需要学习一个数据库的基本使用,学习SQL语句。这个学习过程我们假设在3-5个月左右,你就可以熟练的使用这些语言来做出一个动态网站了。你想要的功能一般经过一段时间的观摩和百度后,都能做出来,也是在这个时候,人最容易浮躁,很多所谓的会做网站的人就在这里停止前进了。当然有些人天生是投机的料,动态语言掌握了一点,从网站上下载一些开源的CMS,通过简单的修修改改也是可以做出来通用类型的网站的。市场上所谓做网站的80%的人员大抵都是到了这个层次。如果只是希望找一份工作的话,已经可以吃口饭了。
接下来会有一些问题困扰着你。当然你可以选择不去理睬。但是我们来看看是哪些问题呢?首先网站容易被入侵,容易被挂马。很多网站没有被入侵,没有被挂马,不是意味着你的网站没问题,而是你的网站太小了,基本上没人访问,黑客都找不到你。这个时候你要解决这个问题,就必须了解基本的安全问题,包括Session和Cookie的机制,包括http协议甚至TCP/IP协议的基本理论。了解SQL注入,XSS注入跨站注入、甚至服务器漏洞等等安全的问题。然后继续学习和钻研。吃透这块以后,基本上能做一个五脏俱全的网站了,这些人常常成为某些网络公司的大牛们。顶着某些光环。
但是接下来,如果你深入思考的话,你会发现自己永远不够的。因为自己的网站运行效率不够快,不够好,因为我们是技术人员,有必要去把东西做到一个极致。因为经过动态开发的网站,总会在一定访问量后表现缓慢甚至奔溃,我没办法给出你具体的数值,因为服务器的硬件和软件开发技术的不同结果就会不一样。这个时候你就需要考虑到缓存,甚至多种缓存策略。如果你做搜索的话,就需要考虑的是不用数据库,而是自己写分词索引了。
假定我们网站很受欢迎,一天大概有500万以上的PV,这个时候我们传统的在程序内使用内存的缓存已经远远不能支持服务了,这个时候你要考虑到使用多台分布式的缓存,你需要学习和研究相关的技术,同时如果你的网站涉及到类似微博那样的相互订阅,而且人数众多,显然关系型数据库是不行的,同时上传的文件和图片,只传递到一个服务器是不行的。这个时候你需要学习一些高深的技术,比如分布式缓存、文件分发系统、分布式开发等等了。
网站人气在发展,网站在修改,你之前学习的动态语言堆砌出来的功能肯定是不行的,你需要学习良好的架构,以便网站的不断发展和修改。你需要很好掌握架构技术,掌握设计模式,同时还的应用多种技术混合在一起来完善你的网站。
如果你的网站有幸成为淘宝、百度或者12306那样的规模。那么你就需要把缓存、分布式缓存、文件分发、灾难备份、数据同步等等多种技术综合起来应用,否则就可能是不是出现奔溃的,这个也是12306的问题所在。