首页
关于
标签合集
友情链接
Search
1
一些简单方面的Linux生产随机密码shell
371 阅读
2
美超微主板IPMI使用教程
338 阅读
3
Ubuntu系统开启root登陆权限
265 阅读
4
linux下502自动重启脚本
254 阅读
5
利用廉价VPS做反代,保护你的真实服务器
197 阅读
OS
促销资讯
管理系统
网站运维
网文资讯
登录
Search
标签搜索
网站架构
linux
网站运营
centos
mysql
google
nginx
ssh
apache
服务器
kloxo
vps
架构分析
PHP
特价VPS
xen
shell
数据库
lamp
vpn
装逼爱好者
累计撰写
163
篇文章
累计收到
20
条评论
首页
栏目
OS
促销资讯
管理系统
网站运维
网文资讯
页面
关于
标签合集
友情链接
搜索到
64
篇与
的结果
2011-07-19
SqlServer自动备份策略设置
Sql Server自身就提供了完善的备份机制,我们只要灵活运用,就能达到令人满意的效果。先了解一下:为何要做备份?数据备份是容灾的基础,是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质的过程。传统的数据备份主要是采用内置或外置的磁带机进行冷备份。但是这种方式只能防止操作失误等人为故障,而且其恢复时间也很长。随着技术的不断发展,数据的海量增加,不少的企业开始采用网络备份。网络备份一般通过专业的数据存储管理软件结合相应的硬件和存储设备来实现。方法一:SqlServer自动作业备份1、打开SQL Server Management Studio2、启动SQL Server代理3、点击作业->新建作业4、”常规”中输入作业的名称5、新建步骤,类型选T-SQL,在下面的命令中输入下面语句DECLARE @strPath NVARCHAR(200)set @strPath = convert(NVARCHAR(19),getdate(),120)set @strPath = REPLACE(@strPath, ‘:’ , ‘.’)set @strPath = ‘D:\bak\’ + ‘databasename’+@strPath + ‘.bak’BACKUP DATABASE [databasename] TO DISK = @strPath WITH NOINIT , NOUNLOAD , NOSKIP , STATS = 10, NOFORMAT(D:\bak\改为自己的备份路径,databasename修改为想备份的数据库的名称)6、添加计划,设置频率,时间等。确定,完成。方法二:SqlServer自动作业备份SQL2005的维护计划里面自带了备份数据库任务,但不会自动按日期命名,不方便,下面的方法是以存储过程来解决的。要用SQL2005的维护计划功能首先要确认SQL Server Agent服务是在启动状态,然后打开SQL Server Management Studio,展开对象资源管理器里的“管理”,右击维护计划选择新建维护计划,为维护计划命名,如:TestDB_Backup,选择默认的子计划 “Subplan_1 ”并点击上方的子计划设置按钮来设置子计划执行方式和时间:出现设置界面,设置每天3点执行一次,如图:确定后保存一下,然后新建一个查询页,开始创建存储过程,代码如下:USE [TestDB]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [BackupDatabase](@FolderPath varchar(500))asDECLARE @FullPath varchar(1000)set @FullPath = @FolderPath+ ‘TestDB_’+convert(VARCHAR(4),year(getdate()))+right( ‘0′+convert(VARCHAR(2),MONTH(getdate())),2)+right(’0′+convert(VARCHAR(2),DAY(getdate())),2)+ ‘.bak’backup database [TestDB] to disk=@FullPath WITH INITreturnUSE [TestDB] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [BackupDatabase](@FolderPath varchar(500)) as DECLARE @FullPath varchar(1000) set @FullPath = @FolderPath+ ‘TestDB_’+convert(VARCHAR(4),year(getdate()))+right( ‘0′+convert(VARCHAR(2),MONTH(getdate())),2)+right(’0′+convert(VARCHAR(2),DAY(getdate())),2)+ ‘.bak’ backup database [TestDB] to disk=@FullPath WITH INIT return设置完毕,切换回维护计划设置页面,在左边的工具箱中拖入一个“执行T-SQL语句任务”:双击拖入后的“执行T-SQL语句任务”,输入执行存储过程的语句来完成每天的自动备份工作,代码如下:use [TestDB]exec BackupDatabase ‘E:\SqlData\TestDB\’use [TestDB] exec BackupDatabase ‘E:\SqlData\TestDB\’确定后保存该维护计划即可SqlServer自动作业备份SQL2005的维护计划里面自带了备份数据库任务,但不会自动按日期命名,不方便,下面的方法是以存储过程来解决的。要用SQL2005的维护计划功能首先要确认SQL Server Agent服务是在启动状态,然后打开SQL Server Management Studio,展开对象资源管理器里的“管理”,右击维护计划选择新建维护计划,为维护计划命名,如:TestDB_Backup,选择默认的子计划 “Subplan_1 ”并点击上方的子计划设置按钮来设置子计划执行方式和时间:出现设置界面,设置每天3点执行一次,如图:确定后保存一下,然后新建一个查询页,开始创建存储过程,代码如下:USE [TestDB]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [BackupDatabase](@FolderPath varchar(500))asDECLARE @FullPath varchar(1000)set @FullPath = @FolderPath+ ‘TestDB_’+convert(VARCHAR(4),year(getdate()))+right( ‘0′+convert(VARCHAR(2),MONTH(getdate())),2)+right(’0′+convert(VARCHAR(2),DAY(getdate())),2)+ ‘.bak’backup database [TestDB] to disk=@FullPath WITH INITreturnUSE [TestDB] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [BackupDatabase](@FolderPath varchar(500)) as DECLARE @FullPath varchar(1000) set @FullPath = @FolderPath+ ‘TestDB_’+convert(VARCHAR(4),year(getdate()))+right( ‘0′+convert(VARCHAR(2),MONTH(getdate())),2)+right(’0′+convert(VARCHAR(2),DAY(getdate())),2)+ ‘.bak’ backup database [TestDB] to disk=@FullPath WITH INIT return设置完毕,切换回维护计划设置页面,在左边的工具箱中拖入一个“执行T-SQL语句任务”:双击拖入后的“执行T-SQL语句任务”,输入执行存储过程的语句来完成每天的自动备份工作,代码如下:use [TestDB]exec BackupDatabase ‘E:\SqlData\TestDB\’use [TestDB] exec BackupDatabase ‘E:\SqlData\TestDB\’确定后保存该维护计划即可
2011年07月19日
14 阅读
0 评论
0 点赞
2011-07-18
大规模网站架构技术原理透析
跟朋友聊天的时候,发现很多人对大型网站系统架构非常感兴趣,我也很感兴趣,经常会在家里2台笔记本和1台服务器组成的局域网环境里作些实验。我进入IT行业的时间,大约是97,98年吧,那时候PC客户端软件最为盛行,做软件开发是一份很体面也很喜欢的工作。我从Win3.1上的VC1.5开始一直到VC6.0,然后转为.Net开发,基本上都是从事客户端软件开发。本人的性格是危机意识向来严重,所以深感互联网必将盛行,传统软件必将走向没落,于是转向了WEB开发。记得以前去某Portal网站应聘的时候,主考官就问我:你认为客户端开发和互联网开发有什么不同。我当时的回答是:互联网开发比客户端软件开发简单多了,我再也不用考虑那么多的用户环境因素了,一点部署,何时何地都可用。很多年过去了,我再想起当初我的回答,依然觉得那个回答是正确的。就产品开发层面来讲,互联网开发确实简单多了。这里首先澄清一个概念,我所说的互联网开发并不是指所有的B/S应用,例如B/S方式的银行内部业务系统。我所说的互联网应用是指在互联网上服务于公众的应用。企业级的业务系统,它的特点是业务逻辑是比较复杂的,但用户一般不太大;互联网应用则相反,业务逻辑一般很简单,但面对的是海量用户。既然互联网应用开发的业务逻辑不复杂,但为什么大型网站都投入了那么多的技术人员呢?主要是因为运营的环境太复杂,这种复杂性形成的原因以下:1、公开性网站的服务是公开的,任何人都可以来访问,所以就会直接面对大量的不良用户,系统数据的安全面临很大的风险,一旦系统被攻入,结果将是灾难性的。2、访问量大访问量大,就意味着网站必须能够承受高并发大流量的考验,如果网站的服务能力和健壮性等达不到要求,你的系统就会被冲垮。3、用户体验用户体验要好,除了产品设计的因素之外,就要求访问网站的速度要快,具有高可用性,别用一会就挂。网站各子系统如何进行部署,如何提高系统的健壮性和高可用性,如何实现网站的安全,如何提高访问速度,如何进行负载均衡,甚至于采用什么的硬件设备,另外,网站发展的不同时期会可能会采用不同的架构,如何实现架构的平滑过渡,如何使目前的架构具有弹性,具备可扩展的能力,这都是大型网站必须解决的问题,也是小网站成长过程中迟早会遇到的问题。我后面的文章将会逐步就这个话题展开。网站机构包括网站的软件架构和系统架构两部分,软件架构主要是指子系统和逻辑层的划分结构;系统架构,一般是系统部署结构。系统架构师的知识体系比较庞杂,所谓的见多识广,多数是由运维工程师成长起来的,他们开发能力不强,编码不多,但动手能力很强,脚本编写非常熟练,经常会做各种类型的实验,密切跟踪最新技术最新产品的相关信息。当然,一个大型的网站,需要一个架构师团队,他们各自承担擅长领域的架构设计,比如安全架构、存储架构等等。我觉得一般的开发人员还是很难走上这条路的,这份工作需要经验,需要不断实践,但如果开发人员一旦走上了这条路,会有很大的发展,主要源于开发人员的思考习惯和技术的深度。我的这系列文章,开发人员可以作为参考,比如如何开发可分布式部署的系统,另外很多朋友都是身兼数职,从开发到实施,到部署全部包办。我个人深感精力有限,所以又特意找了几个朋友从Unix/Linux系统和Windows系统不同角度进行探索,以造福正在摸索中的朋友,有兴趣的朋友也可以参与。其实,这部分内容我一直在写,比如PHP深度探索系列,写了大量的关于apache的内容,我已经大体把apache代码阅读了一遍,很费时间,进度缓慢,但我想这有助于我们理解apache的配置和调优。在介绍网站架构之前,我们先介绍一些网站架构中最基础和常见的概念,以便更好的理解后面的有关负载均衡和分布式存储等技术。第一个,首先讲讲CDN。1、CDN是什么CDN(Content Delivery Network),就是内容发布网或者内容分发网,它的主要目的:通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络边缘,使用户可以就近取得所需的内容,从而提高用户访问网站的响应速度,提升用户体验,同时能够分散访问压力,把本来用户集中访问分散到各地去。网站的内容提供商(比如新浪、搜狐、网易等等)使用CDN,就可以在宏观层解决一部分大流量、海量用户并发等令人头疼的问题。2、CDN的组成内容发布网(CDN)是一个经策略性部署的整体系统,包括分布式存储、负载均衡、网络请求的重定向和内容管理4个要件,而内容管理和全局的网络流量管理是CDN的核心所在。通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务,达到用户所要求的服务距用户仅有”一跳”(Single Hop)之遥。我们通常的内容发布模式都是将网站数据放到一处,然后应对来自世界各地的访问,我们多数考虑的是软件部署架构,很少考虑网络硬件架构。与之形成对比的是,CDN则强调了网络在内容发布中的重要性。通过引入主动的内容管理层的和全局负载均衡,CDN从根本上区别于传统的内容发布模式。内容提供商承担了他们不该干也干不好的内容发布服务。3、互联网服务的产业链纵观整个宽带服务的价值链,内容提供商和用户位于整个价值链的两端,中间依靠网络服务提供商将其串接起来。随着互联网工业的成熟和商业模式的变革,在这条价值链上的角色越来越多也越来越细分,出现了内容运营商、托管服务提供商、骨干网络服务提供商、接入服务提供商等等。在这一条价值链上的每一个角色都要分工合作、各司其职才能为客户提供良好的服务,从而带来多赢的局面。从内容与网络的结合模式上看,内容的发布已经走过了ICP的内容(应用)服务器和IDC这两个阶段。IDC的热潮也催生了托管服务提供商这一角色。但是,IDC并不能解决内容的有效发布问题。内容位于网络的中心并不能解决骨干带宽的占用和建立IP网络上的流量秩序。因此将内容推到网络的边缘,为用户提供就近性的边缘服务,从而保证服务的质量和整个网络上的访问秩序就成了一种显而易见的选择,这就是CDN服务模式。CDN的建立解决了困扰内容运营商的内容”集中与分散”的两难选择,无疑对于构建良好的互联网价值链是有价值的,也是不可或缺的最优网站加速服务。4、CDN服务提供商ChinaCache是中国最大的CDN服务提供商,是不是唯一未可知也。要想成为CDN服务提供商,恐怕要摆平电信、网通、铁通等等运营商,这得需要什么样的能力和背景不得而知。它的服务节点在全球已经超过130个,其中国内节点超过80个,覆盖全国主要6大网络(所谓6线机房,就是这么来的)的主要省份,象各大门户网站,比如新浪、网易等等都是租用了他们的服务。所以,你无论是在南方,或者北方,还是在北美,访问这些门户网站,感觉速度都很快,最主要的原因之一就是CDN发挥了效果。一般小网站是用不起这服务的,所以慢点就慢点了吧,可以租用互联互通的6线机房,如果网络足够宽的话,用户也可以忍受。如果想继续提升用户体验的话,就需要做一些网站镜像,部署在具有代表性的几个大城市,比如华南可以部署在广州,华东可以部署在上海,华北可以部署在北京,不过内容镜像的过程,就需要自己去部署和维护。还有的网站,采用内容分割的方式,比如建立针对各地的分站,业务情况不同,可能部署的策略不同。CDN可以认为是基础网络建设的一种策略。前面介绍了cdn的一些原理和概念,以及提供cdn基础网络服务的途径。cdn看起来对于静态内容的,比如html,js,image是非常合适的,通过cdn的部署,用户只需要一跳就可以访问到网站的内容。那对于动态内容怎么办呢?我回答一下:动态内容按照存在形态可以分为三类。第一类:内容长时间不需变化,这类内容一般是通过网页静化技术,实现动态内容转换成静态内容,从而达到cdn部署,典型的就是内容类网站,比如新浪、搜狐、网易等等的内容发布系统cms,内容的增删改等管理工作被准实时同步到各个节点。第二类:内容可能会短时间内发生变动,但是最终会稳定。比如论坛、博客等应用,这类服务提供的内容按照一定的时间间隔,实现批量静化,当然也有实时静化,像Mop的大杂烩、网易社区就是使用了这样的策略。第三类:内容会实时变化,非常个性化。比如邮箱应用,这类服务提供的内容无法实现静化,只能通过实行分区域部署和负载均衡等手段进行优化。对于提供cdn服务的厂商来讲,静态内容的cdn自然没有问题,对于第三类服务,只能从通信链路层进行相应的优化。对于很多网站的伪静化,有的出于Seo的考虑,有的出于安全性的考虑,手段基本上是rewrite Url。它只不过是一种外在的表现形式,与Html静化是两回事,它依然是一种动态内容。1. 负载均衡的分类负载均衡技术在网站运营过程中应用非常普遍,技术也很成熟。负载均衡技术按照软硬件形式分为软均衡和硬均衡。软均衡就是基于软件技术的均衡,硬均衡是基于硬件技术的均衡;按照网络协议划分又分为四层均衡和七层均衡。四层均衡就是基于OSI网络层的数据均衡,七层均衡是基于OSI应用层的数据均衡。各种均衡方式在大型网站中均有采用,而且大多数情况下,是多种均衡方式的组合。2. DNS轮询均衡这种方式,算是比较独立的一种方式,不在上述划分之列,但使用比较广泛,一般用在网站最前端。你可以做个试验,在dos命令行中运行nslook命令。比如:nslookup www。163。com,你会看到命令给出了一堆解析后的IP地址。这些地址就是www.163.com这个域名绑定的多条A记录。我们从浏览器发起的访问请求http://www.163.com/,那么你输入的域名首先需要经过DNS服务器进行解析,Dns服务器的解析的过程就是按照A记录的顺序,依次分配IP地址。Dns轮询方式实现均衡就是利用这个原理,在一个域名下面绑定N个IP地址,访问请求被均衡到不同的设备。Dns轮询方式提供的IP地址,在大型网站中往往是一个集群的地址,可能是均衡交换机也可能是均衡服务器。对于小网站的话,挂接多台服务器也没有问题。DNS轮询均衡的优点:1、零成本:只是在Dns服务器上绑定几个A记录,域名注册商一般都提供;2、部署简单:就是在网络拓扑进行设备扩增,然后在Dns服务器上添加记录。DNS轮询均衡的缺点:1、流量分配不均:Dns解析过程其实环节很多,而且是一种层层缓存的机制,你的dns服务器虽然进行更新,但是客户机、以及网络上其它的dns服务器不会实时更新,所以流量很难保证100%的平均。目前,dns服务器都提供了多种手段可以调整dns轮询分配的策略,但是确实无法保证很完美的均衡。2、健康检查:Dns服务器中A记录地址中的某一台服务器宕机,DNS服务器是无法知道的,仍旧会将访问分配到此服务器。所以需要人员或者工具进行实时检测,在某台机器宕机之后,把备份机推上生产线,如果想要从A记录地址摘除某个地址,这个通知过程需要几个小时甚至更久才能扩散到所有的客户机。Dns轮询方式推到服务的最前端还是很有效的,它通过最原始的方式,把访问用户映射到不同的服务集群上。对于大型网站来讲,对外服务的IP地址是不可能经常变动的,而且后端的集群一旦宕掉,可以迅速推上冗余集群。再加上,一般都是经过CDN部署,服务被拆分到各个局部,所以在运营过程中不会产生太大的影响。3. OSI七层模型我们接下来讲讲七层均衡。要理解四七层均衡的原理,就先要回忆一下大学课本里学的网络七层模型(OSI)。OSI是一个开放性的通行系统互连参考模型,他是一个定义的非常好的协议规范。OSI模型有7层结构,每层都可以有几个子层。OSI七层模型是一个很好的理论模型,但是在实际应用中都做了裁剪。尤其是TCP/IP的盛行,把7层结构压成了4层,所以很多人都批评OSI七层模型过于复杂,但是作为一个完整的全面的网络模型,还是被大家非常认可的。OSI的7层从上到下分别是应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。OSI 7层的功能描述:(1)应用层:与其他计算机进行通讯的一个应用,它是对应应用程序的通信服务的。例如,一个没有通信功能的字处理程序就不能执行通信的代码,从事字处理工作的程序员也不关心OSI的第7层。但是,如果添加了一个传输文件的选项,那么字处理器的程序员就需要实现OSI的第7层。示例:telnet,HTTP,FTP,WWW,NFS,SMTP等。(2)表示层:这一层的主要功能是定义数据格式及加密。例如,FTP允许你选择以二进制或ASII格式传输。如果选择二进制,那么发送方和接收方不改变文件的内容。如果选择ASII格式,发送方将把文本从发送方的字符集转换成标准的ASII后发送数据。在接收方将标准的ASII转换成接收方计算机的字符集。示例:加密,ASII等。(3)会话层:他定义了如何开始、控制和结束一个会话,包括对多个双向小时的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的,在某些情况下,如果表示层收到了所有的数据,则用数据代表表示层。示例:RPC,SQL等。(4)传输层:这层的功能包括是否选择差错恢复协议还是无差错恢复协议,及在同一主机上对不同应用的数据流的输入进行复用,还包括对收到的顺序不对的数据包的重新排序功能。示例:TCP,UDP,SPX。(5)网络层:这层对端到端的包传输进行定义,他定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习的方式。为了适应最大传输单元长度小于包长度的传输介质,网络层还定义了如何将一个包分解成更小的包的分段方法。示例:IP,IPX等。(6)数据链路层:他定义了在单个链路上如何传输数据。这些协议与被讨论的歌种介质有关。示例:ATM,FDDI等。(7)物理层:OSI的物理层规范是有关传输介质的特性标准,这些规范通常也参考了其他组织制定的标准。连接头、针、针的使用、电流、电流、编码及光调制等都属于各种物理层规范中的内容。物理层常用多个规范完成对所有细节的定义。出处:51CTO http://developer.51cto.com/art/200903/115670_1.htm
2011年07月18日
18 阅读
0 评论
0 点赞
2011-07-17
Linux下Mysql表名大小写问题解决
在MySQL中,数据库对应数据目录中的目录。数据库中的每个表至少对应数据库目录中的一个文件(也可能是多个,取决于存储引擎)。因此,所使用操作系统的大小写敏感性决定了数据库名和表名的大小写敏感性。这说明在大多数Unix中数据库名和表名对大小写敏感,而在Windows中对大小写不敏感。一个显著的例外情况是Mac OS X,它基于Unix但使用默认文件系统类型(HFS+),对大小写不敏感。在windows下表名不区分大小写,所以在导入数据后,有可能所有表名均为小写;而从win导入linux后,在调用时会出现大小写的问题,则有些表,例如:第一点:程序调用表名为:fov_Web;第二点:导入win后变为fov_web;第三点:再导入linux后也是fov_web,此时linux会区分表名的大小写,则导致该表无法读取。解决方法:在linux下mysql表名大小写问题解决方法:修改my.cnf,一般位于:/etc/my.cnf[mysqld]lower_case_table_names=1#表名全部为小写,避免出现大小写敏感
2011年07月17日
20 阅读
0 评论
0 点赞
2011-07-17
网站应该如何来策划?
跟据每个网站的情况不同,网站策划书也是不同的,但是最终都不要离开主的框架,那么在网站建设前期,我们要进行市场分析,然后总结一下,形成书面报告,对网站建设和运营进行有计划的指导和阶段性总结都有很好的效果。网站策划书一般可以按照下面的思路来进行整理,当然特殊情况要特殊对待:(我们按照门户网站、企业网站、个人网站的建设来分别进行框架定位。)更多具体内容可参考:《互联网创业前奏曲:网站策划九步走》这本书,里面对网站策划书有详细的描述,而大概来说,网站策划书的轮廓如下:一、网站建设市场分析及网站的定位我们把市场分析和网站的定位联系起来放在第一章,是因为它们之间有所联系,我们要根据市场分析得来的情况对网站进行定位和目标调整。与此同时,我们还要进行网站服务对象分析。市场分析:门户网站:门户网站包括综合性门户网站、电子商务类门户网站、行业门户网站、信息服务类门户网站(这里我们将bbs归类为综合性门户网站;将博客归类为信息服务类门户网站)。以笔者曾做过的一个汽配行业门户网站为例,建站初期先进行市场调研,找到同行业的汽配网站有哪些,它们的主要栏目有什么,特色服务有什么,发展情况怎么样等等。然后对它们的栏目进行取舍,再根据自身特点创办栏目。确定自己网站的栏目之后,还要对同行业外网站进行筛选,找出内容上互补的网站以便日后推广时做链接与合作。对同行业的网站发展情况做个大致的了解后,根据实际情况检查自己有什么样的优势,有什么不利因素,然后才能对网站进行定位。企业网站:企业网站的市场分析比较容易,因为企业建站的目的无非是想对企业自身进行更好的宣传,想要在互联网营销中占有一席之地,想要提供产品的技术支持和在线互动,以便更好的为客户服务,同时也提高企业利润。企业网站的建设思路可以参照同行业做得比较好的网站,但同时也要根据自身的发展进行调整,切不可盲目跟从。企业网站同样可以找到一些同行业的互补网站来进行链接。个人网站:个人网站建设在内容上往往是大同小异的,但是也有一些个人网站可以别出心裁,采用独特的网站类型,这样的建站效果通常可以收到奇效。一般来说个人网站对市场分析是比较忽略的,但是大中型的个人网站应该进行市场调研,和门户网站所做的一样。网站定位:市场分析做完后,通常要有一个总结。然后要对自己将要做的网站有一个明确的认识,做出目标和定位。网站目标:网站目标包括短期目标和长期目标。有目标的网站才能在网站建设和运营过程中了解网站的发展情况,根据具体情况制定具体措施。目标可以用多种形式来划分,比如说用Alexa排名来划分:一个月后排多少名;半年后排多少名;一年后排多少名等等。也可以用赢利的形式来划分:一个月赢利将达到多少;半年后赢利多少;一年后赢利多少等等。同样的还可以用会员数、信息数量、网站流量、pv值等等来划分,但要注意的是,一定要根据实际情况和有效的参考资料来制定目标,不能盲目,新建的一个站一个月就可以达到世界排名前100好象不太现实(除非你找到非常厉害的优化公司)。网站定位:网站的定位也可以说是目标。它是为自己的网站制定一个最终的目标。说的准确一点,网站定位除了包含网站要达到的目标之外,还包括网站的发展方向,网站的文化等等因素。网站服务对象分析:网站建设中不能忽略的就是:“这个网站究竟在为什么人提供服务?”对于这个问题,所以网站建设者都要注意。我们在网站建设中通常把网站的服务对象做一个比较,划分出第一梯队服务对象和第二梯队服务对象以及其他梯队服务对象(当然,对于某些web2.0网站来说,这种分析就没有必要了)。第一梯队服务对象:对我们网站具有很高依赖性,或者是我们网站服务内容主要面向的对象。比如汽车配件网站,它的第一梯队服务对象就是汽车配件供应商,汽车配件采购商以及汽车配件贸易公司等等。第二梯队服务对象:对我们网站有兴趣,或者是第一梯队服务对象替补(所以第一梯队服务对象替补就是一些本来应该是第一梯队服务对象的,但对网站不了解,对互联网不认同的一些企业或个人。它们随时都有可能成为第一梯队服务对象),或者是和本行业互补的一些企业和个人。第三梯队服务对象:包括行业的研究者、学者、新闻媒体等等。二、网站的内容建设在对网站进行市场分析调研和定位之后,我们要做的就是网站的基础设施建设了,它包括网站的前台页面设计制作和网站的后台编程,在网站全部做完之后还要进行网站测试和上传等工作。网站设计:网站设计主要是对网站前台页面进行制作。所谓前台设计通俗点讲就是浏览者能够看到的那部分,也就是所说的网页。对于不同类型的网站,前台设计情况可能略微不同。门户网站:门户网站设计主要是简单,界面友好,要追求网页打开速度。门户网站的首页通常是比较简单中留出一点独特的风格,在不影响网页速度的前提下保留个性与独到。企业网站:企业网站的设计通常有三种情况,第一种就是基于网站制作软件生成的静态的或者半静态的模版。这样的网站通常没有什么独特的地方,一般不会被浏览者轻易的记住。 第二种就是一些互联网服务类公司为企业建立的所谓“标准首页”的网站首页,采用了大量的图片元素和动画效果,以至于网站的打开速度严重受到影响,这样的网站和一些个人网站一样,追求的是华丽的表现形式。第三类企业网站拥有和门户型网站界面类似的首页,这样有利于网站打开速度,缺点是图片较少,设计上如果没有很好的创意也很难让人记住。个人网站:个人网站通常是两种形式,一种是爱好型的非赢利网站,这种网站通常采用大量的图片来追求炫目的感觉。一种是个人站长由于资金问题建立的个人门户型网站,和门户型网站的设计属于一类。网站编程:网站编程是网站安全的基础,一个好的程序可以是网站受到攻击而产生不良后果的问题大大减少,网站变成需要专业的编程技术,一般来说网站流行的编程语言有以下几种:JSP、ASP、.NET、PHP等等。网站建设编程语言是一个选择,要用所选的语言编具有什么功能的程序才是网站基本。通常情况下网站都具有这些基本系统:新闻发布系统(信息发布系统)、产品发布系统、会员管理系统、广告管理系统、流量统计分析系统等等。每个系统的具体作用我们将在后面一一描述。网站测试和上传:网站的设计和编程全部做完之后,我们要对网站进行测试和上传。首先我们应该将网站上传到网站空间,然后对网站进行测试,同时也是对网站空间进行测试。一般来说,网站测试需要进行的就是网站页面的完整程度,网站编程代码的繁简程度和完整性,网站空间的链接速度和网站空间的加压测试承受度。网站内容填库:网站制作完毕了,网站测试也完毕了,那么我们马上就可以进行推广了吗?答案当然是“不!”网站制作刚刚完成,没有内容,你怎么进行推广,又有谁会看呢?所以测试的下一步就是对网站进行数据库填充。用自己原创的文章,或者从网上和书上摘录的文章把数据库填充一下,至少要让浏览者感觉你的网站不是今天才刚刚上线才行。同时,你数据库填充的内容越多,在搜索引擎上被收录的页面也就越多,对下一步的推广也是大有好处的。三、网站的推广网站的推广可是说是网站建设中尤为重要的一部分,推广做的好可以说网站建设就成功了一大半,那么怎么样进行推广呢?推广的方式有哪些呢?让我们来看一下:免费推广方式:友情链接:和其他网站做友情链接,最好找比自己PR值高的网站来做。登陆免费搜索引擎:让搜索引擎都收录你的网站,这样你的网站就可以在互联网上被其他企业或者个人所查找到了。论坛广告:到各个论坛去发广告宣传你的网站。群发推广:用qq群发软件,或者邮件群发软件来进行推广。病毒式推广:这个推广方法通常在推广前要下大功夫,制作出一些比较吸引人的东西来进行网络化传播。如图片、程序代码、常用软件等等。加入导航网站:加入导航网站对推广要有好处,不过有一些比较有名的导航网站登陆需要花费。付费推广方式:搜索引擎关键词:在比较著名的搜索引擎做关键词推广。活动宣传:如果你做的是一些比较大的门户网站,那么你可以选择做一些活动宣传这样的推广,比如说免费会员月等等。网络广告:做网络广告,在流量比较大的网站上做广告宣传。传统宣传方式:虽然互联网发展越来越快,但是传统的宣传方式现在还是占主导地位,所以建立做电视广告,广播,宣传册等宣传,对网站的推广效果很明显。制造事件推广:越来越多的人都发现,互联网时代最快最有效的其实是炒作,有意制造和自己网站相关联的事件(特别是爆发性事件),对网站的宣传传播速度非常的快。网吧主页:如果你有能力的话,这种推广方式完全可以是免费的。在网吧设置IE主页为你的网站会给你带来巨大的而稳定的流量。四、网站的运营这里我们不谈“不以赢利为目的”的个人网站和服务型网站,那么必然要讲到网站如何赢利。网站的运营除了网站营销以外,还包括管理等。网站的赢利手段:1 会员制2 广告收费3 交易佣金4 信息内容收费5 短信收费6 网站衍生项目收费网站管理:1 需要对网站的发展进行研究和方向性决策。2 需要对网站吸收和支付费用进行整理。3 需要对网站内容和版式进行维护和更新。4 需要对网站进行宣传推广。具体的赢利手段和管理内容我们将在后面仔细分析。五、网站的投资与风险分析这个问题是无论做什么项目之前都必须要考虑到的,不仅仅是网站问题,我们在这里简单的说明一下,后面就不会涉及到了。一般来说投资包括固定资产、运营费用和流动资金。网站的投资:固定资产:对于网站来说,固定资产主要包括服务器、硬件防火墙、交换机、路由器、机柜等等,我觉得尽量把可以当做固定资产的都物品都作为固定资产,比如说域名等等。因为如果是商业网站的话,固定资产可以抵一部分税。运营费用:运营费用主要包括网站日常的开销,如宣传推广费用,人员工资费(当然也包括个人网站的站长生活费,呵呵),水电费等等。流动资金:这个就不说了,总要做到有备无患,网站可不能说什么时候停就停,什么时候开就开,和小杂货店毕竟还是不一样的。网站的稳定性很重要。投资风险分析:做网站之前,分析完网站建设的可行性,然后就要考虑到投资的风险。估算出投资的损益表,计算一下投资回收期都是很必要的。
2011年07月17日
18 阅读
0 评论
0 点赞
2011-07-16
MySQL优化之数据类型的使用
有助于效率的类型选择1、使你的数据尽可能小最基本的优化之一是使你的数据(和索引)在磁盘上(并且在内存中)占据的空间尽可能小。这能给出巨大的改进,因为磁盘读入较快并且通常也用较少的主存储器。如果在更小的列上做索引,索引也占据较少的资源。你能用下面的技术使表的性能更好并且使存储空间最小:·尽可能地使用最有效(最小)的类型。MySQL有很多节省磁盘空间和内存的专业化类型。·如果可能使表更小,使用较小的整数类型。例如,MEDIUMINT经常比INT好一些。·如果可能,声明列为NOT NULL。它使任何事情更快而且你为每列节省一位。注意如果在你的应用程序中你确实需要NULL,你应该毫无疑问使用它,只是避免缺省地在所有列上有它。2、使用定长列,不使用可变长列这条准则对被经常修改,从而容易产生碎片的表来说特别重要。例如,应该选择 CHAR 列而不选择 VARCHAR 列。所要权衡的是使用定长列时,表所占用的空间更多,但如果能够承担这种空间的耗费,使用定长行将比使用可变长的行处理快得多。3、将列定义为 NOT NULL这样处理更快,所需空间更少。而且有时还能简化查询,因为不需要检查是否存在特例 NULL。4、考虑使用 ENUM 列如果有一个只含有限数目的特定值的列,那么应该考虑将其转换为 ENUM 列。ENUM 列的值可以更快地处理,因为它们在内部是以数值表示的。有关BLOB和TEXT类型1、使用BLOB和TEXT类型的优点用 BLOB 存储应用程序中包装或未包装的数据,有可能使原来需要几个检索操作才能完成的数据检索得以在单个检索操作中完成。而且还对存储标准表结构不易表示的数据或随时间变化的数据有帮助。2、使用BLOB和TEXT类型的可能弊端另一方面,BLOB 值也有自己的固有问题,特别是在进行大量的 DELETE 或 UPDATE 操作时更是如此。删除 BLOB 会在表中留下一个大空白,在以后将需用一个记录或可能是不同大小的多个记录来填充。除非有必要,否则应避免检索较大的 BLOB 或 TEXT 值。例如,除非肯定WHERE 子句能够将结果恰好限制在所想要的行上,否则 SELECT * 查询不是一个好办法。这样做可能会将非常大的 BLOB 值无目的地从网络上拖过来。这是存储在另一列中的 BLOB 标识信息很有用的另一种情形。可以搜索该列以确定想要的行,然后从限定的行中检索 BLOB 值。3、必要的准则对容易产生碎片的表使用 OPTIMIZE TABLE大量进行修改的表,特别是那些含有可变长列的表,容易产生碎片。碎片不好,因为它在存储表的磁盘块中产生不使用的空间。随着时间的增长,必须读取更 多的块才能取到有效的行,从而降低了性能。任意具有可变长行的表都存在这个问题,但这个问题对 BLOB 列更为突出,因为它们尺寸的变化非常大。经常使用 OPTIMIZE TABLE 有助于保持性能不下降。使用多列索引多列索引列有时很有用。一种技术是根据其他列建立一个散列值,并将其存储在一个独立的列中,然后可通过搜索散列值找到行。这只对精确匹配的查询有 效。(散列值对具有诸如“<”或“>=”这样的操作符的范围搜索没有用处)。在MySQL 3.23版及以上版本中,散列值可利用 MD5( ) 函数产生。散列索引对 BLOB 列特别有用。有一事要注意,在 MySQL 3.23.2 以前的版本中,不能索引 BLOB 类型。甚至是在 3.23.2 或更新的版本中,利用散列值作为标识值来查找 BLOB 值也比搜索 BLOB 列本身更快。将 BLOB 值隔离在一个独立的表中在某些情况下,将 BLOB 列从表中移出放入另一个副表可能具有一定的意义,条件是移出 BLOB 列后可将表转换为定长行格式。这样会减少主表中的碎片,而且能利用定长行的性能优势。使用ANALYSE过程检查表列如果使用的是 MySQL 3.23 或更新的版本,应该执行 PROCEDURE ANALYSE( ),查看它所提供的关于表中列的信息ANALYSE([max elements,[max memory]])它检验来自你的查询的结果并返回结果的分析。max elements(缺省256)是analyse将注意的每列不同值的最大数量。这被ANALYSE用来检查最佳的列类型是否应该是ENUM类型。max memory(缺省8192)是在analyse尝试寻找所有不同值的时候应该分配给每列的最大内存量。SELECT … FROM … WHERE … PROCEDURE ANALYSE([max elements,[max memory]])例如:mysql>SELECT * FROM student PROCEDURE ANALYSE();mysql>SELECT * FROM student PROCEDURE ANALYSE(16,256);相应输出中有一列是关于表中每列的最佳列类型的建议。第二个例子要求 PROCEDURE ANALYSE( ) 不要建议含有多于 16 个值或取多于 256 字节的 ENUM 类型(可根据需要更改这些值)。如果没有这样的限制,输出可能会很长;ENUM 的定义也会很难阅读。根据 PROCEDURE ANALYSE( ) 的输出,会发现可以对表进行更改以利用更有效的类型。如果希望更改值类型,使用 ALTER TABLE 语句即可。
2011年07月16日
17 阅读
0 评论
0 点赞
2011-07-16
谷歌投资与并购地铁路线图曝光
金融社交网络MeetTheBoss.com的网民制作了以上的谷歌并购和投资地铁路线图。MeetTheBoss之前也为亚马逊和eBay制作了类似的地图。图中没有来得及囊括谷歌刚刚在上周收购的ReCAPTCHA,但是已经包括了谷歌大部分的并购。图中每个站点代表一个并购。最长的、包含最多站点的一条路线是技术(紫罗兰色)和服务(绿色)。可以看到并行在两条线上的新公司可能会更容易被谷歌收购,至少过去是这样。其他更短一些,但是有重叠的线路包括广告(粉色)、搜索(橙色)、地图(紫红色)、社交(红色)、视频(深红色)。不知道谷歌未来会在哪条路线上延伸。在谷歌的投资当中,可以看到中国的搜索公司百度和中国的下载软件迅雷。在今年大半年时间当中,谷歌都没有进行并购。但是八月对视频压缩技术公司On2 Technologies的收购,以及一周前对网络防欺诈工具软件公司ReCAPTCHA的收购,表明谷歌已经重启收购战略。谷歌首席执行官埃里克·施密特(Eric Schmidt)近日表示,他希望在一个月内就收购一家小型公司,大宗的收购也有可能,他认为这是一个很好的吸纳最优秀人才的途径。谷歌投资与并购路线图曝光谷歌在2003年收购了拥有Blogger的Pyra Labs。在2006年收购了广播广告公司dMarc。同年收购了Upstartle,将其技术和谷歌电子数据表合并成了谷歌文档。2006年10月,谷歌宣布以16.5亿美元收购Yutube。2007 年,谷歌又兼并了四家公司:瑞典Gapminder公司的互动统计软件Trendalyzer、游戏广告公司Adscape Media、软件应用平台PeakStream Technologies和网络广告服务商DoubleClick. 在所有谷歌并购的公司中,迄今为止,DoubleClick可能会给谷歌带来最多收入。
2011年07月16日
18 阅读
0 评论
0 点赞
2011-07-15
网络推广一百单八技
1、SNS网站软文推广法:现在SNS类型的网站非常流行,去SNS网站主要是去几个有人气的SNS网站有针对性的加几百上千个用户。然后选择合适的软文并合理的附带上网站链接,发表到自己的日志里。再让自己的一些好友分享,这样就让很多人都关注到你的文章,关注到了你的网站。2、SNS网站 API合作推广法:如果你自己或下面的员工有一定的技术实力,可以开发一些和自己网站产品相关的小插件,插到校内上,插到海内上。只要有开放API的 SNS网站都去插下。现在很多网站都有在这么搞,去校内看看哪些开放的应用程序,很多都是一些小网站提供的,而且上面都或多或少有挂自己网站的广告。而且这个市场越早做越好,很多SNS网站都是才开始尝试开发API,审核的要求还不是特别严格。等以后做的网站多了,再想插到SNS网站里去就难了。3、收藏夹推广法:把一些精彩内容的页面添加到QQ书签,百度搜藏,雅虎收藏等,让喜欢这些内容的网民去阅读,收藏。4、版主联盟推广法:这个方法适合论坛社区网站的推广。也就是先去加入一些版主联盟,像大旗版主联盟就很不错,每天把论坛的一些精彩内容提交上去,等待被相关频道录用,一经录用,那就会给你带去不少的IP.我最多的一次是两天就给网站带去了3W多的IP点击量。5、回复置顶推广法:其实这个方法我也不知道该叫什么名字,它的局限性很小,据我所知,只使用于猫扑大杂烩,就暂且叫回复置顶吧。这个方法是我偶然发现的,是在看网站IP来路的时候发现的,发现那天有200多的IP来自猫扑的一个帖子,但是我知道我们没有去那里发过推广帖,所以觉得有点奇怪,就去那个帖子看看,发现是有人放了我们网站的一个链接,并且回复置顶了,所以才给我们带来了200多的IP.后来我就去和一些常在猫扑混的网友聊,才知道可以用一种叫“月明符”的道具来置顶回复。版主还不能删,只要管理员才有权删,所以一般情况下都能置顶一段时间。6、有奖注册推广法:以增加会员注册量来做的一种推广方法。一般大家都是以有奖注册,或者一些激励注册的方法来推广,现在的人都是现实很精的,无利可图的事,他们是不会做的。7、免费游戏推广法:免费游戏就是在你的网站挂一中免费的游戏,但是是要和网站的主题相同,还要是有奖游戏。他们网站就挂了一款完全免费的“梦幻体彩”足球比分竞猜游戏,就和他们的网站内容完全是一致。推广的效果也非常好。8、 QQ群推广法:用几十个qq,每个qq加入几十个群,每天发一遍网站。平均、50个qq*每个qq加入50个群*每个群50个人=75000人观看。如果qq更多,加入的群更多,加入的是大群,每个群的人数更多,则宣传效果更好。即使排除不在线的qq用户,效果也不容低估。要忍辱负重,不怕被踢。另外就是在QQ群是是可以发群邮件的,例如你可以把你的网站******.com上的精彩内容在邮件中推荐。9、搜索引擎推广法:如今的新手站长,最热衷的就是这个短平快的方法。搜索网站的功能就是整合网络资源,给网民找到最适合的网站内容,给其他网站带去流量是其意想不到的副作用。很多站长类网站的网站推广栏目,似乎都变成seo专区了。seo的最好方法,就是网页代码规范、访问速度快、内容独特少重复,对网民有用,而且具有唯一性。10、软文推广法:写文章,或者引用好文章,里面巧妙地加入自己的网址。11、博客推广法:软文要有发表的地方。一个是发到论坛,文章站,一个是发到博客里。发到博客里有个好处,不会被乱删。12、媒体推广法:让传统的媒体,报纸、电视、广播等等报道。13、手机推广法:wap网站、群发短信、彩铃提示等。手机的功能越来越强,小巧容易携带,以后手机的上网人数肯定超过电脑人数。14、网摘推广法:提高优质网页、图片、帖子到网摘站和聚合类网站。如果被推荐,也能有不少流量。15、论坛推广法:注册几十个几百个论坛,每个论坛注册几十个帐号,把签名设为自己的网站。发表热门内容,自己顶自己帖子。注意换马甲,发布有争议性的标题内容。好的标题是论坛推广成败的100%.这里说的论坛是指泛论坛,包含留言本、论坛、贴吧等等一切网民可能聚集的地方。16、第三极推广法:在宣传网站的同时,缀上自己的财富第三极号码。在每个网页的内容后面,加上自己的财富第三极号码,扩大知名度,还有带来额外的财富收入。17、QQ和MSN昵称推广法:把昵称修改为网址,例如免费大奖游戏。18、邮件列表推广法: 就是定期不定期的给网民发送电子杂志。19、非预期邮件推广法:用专业的邮件群发工具,上网批量搜集电子信箱地址,然后群发。如今的很多网站,都要用电子信箱作为用户名,因此,搜集电子信箱地址,比以前方便多了,而且这些电子信箱都是活信箱,网民经常用的信箱,而非失效的信箱,效果不错。邮件标题要“规范”,别让网民误以为是垃圾邮件。20、口碑推广法:好好做内容,让网民自己主动传播你的网站。21、限制访问内容推广法:给网站内容分出访问等级,设置访问条件。给网民一个推广链接,网民只有推荐够一定访客或者注册会员后,才能访问该内容。非主流色彩爱情网站多用此方法,效果奇佳。22、网站排名投票推广法:加入其他的网站推出的网站排名,或者给其他站进行网站排名,都能有效地提高网站的展示率。23、聚合链接推广法:将优秀内容聚合在一起,吸引网民。24、BT电炉哇嘎资源推广法: 可以在音视频文件里放入自己的网站,特别是在一些需要证书才能收看的视频文件里,甚至可以弹出网站。一些站长使用这种方法,借助最新的电影上映时机,发布一个视频文件,就能搞到几十万的ip,效果绝对一流。25、图片打水印推广法:防止别的网站引用图片,不仅不友好没效果,而且阻挡了搜索引擎的收录。从某种角度来说,其他网站也是自己网站的特殊网民。如果给网站打上水印,放上网站地址,积极地让别的站引用图片,提高网址曝光率,那么宣传效果是很好。水印法,包括图片水印法、视频水印法、网页水印法……26、视频源Flash推广法:如今的视频网站,都提供外部的访问接口。在别的网站、日志引用这些视频的同时,直接宣传了网站,扩大了网站的影响力。27、提交到网址站推广法:网站导航站,网站目录站。28、电子邮件自动回复推广法:就是在邮箱设置自动回复,把网站的地址和网站介绍设置为自动回复内容。当你接收到任何一封邮件的时候,邮箱就会自动回复过去。29、无偿单向链接推广法:无偿给其他网站做链接,既能丰富自己网站的信息,而且在网民搜索别的站的时候,又可能出现自己的网页结果。 30、网站间互换链接推广法:这是几年前最流行的网站宣传方法,如今存在的交换链网站很稀少了。31、批量提交交换链接推广法:用自动提交工具,提交网站到其他网站的友情链接栏目。当站长们在审核是否通过你站的时候,就为你贡献了一个ip.人类社会的发展,就是得益于工具自动化程度的提高。要充分利用互联网传递信息的自动化、数字化、批量化优势,善于使用批量宣传工具,节省人力重复性劳动。 32、网站推广联盟推广法:单打独斗出不了英雄好汉,一个人的精力时间和聪明才智毕竟太小,因此,要懂得借用外力。几个站长联合在一起,达成宣传共识。在宣传自己网站的时候,顺便也捎带上别的网站。用同样的劳动,得到更多的收获。33、流量统计推广法:在网站的所有页面上放置一个iframe页面引用代码,在所引用的页面上放上其他网站的统计器,用程序代码控制变换统计id,当其他站长查看统计,浏览访问来路来源的时候,你的网站就出现了。一般的站长都会点击查看的,这种宣传方法效果很好,属于密不外传的绝招,很多人知道百度和 google的威力就是从网站访问来路知道的。34、互换频道推广法:和其他网站互相交换频道。就是把对方网站当作自己的一个频道在网站上推广。这样互相捧场,互相帮衬,威力巨大。35、免费资源推广法:给其他网站提供免费的服务,比如免费统计,免费评测,免费天气查询代码,免费博客,免费ip查询代码,免费股票查询代码,免费搜索代码,免费在线客服系统,免费留言本,免费域名,免费空间,免费pr评价,免费电子书,免费查询,免费挂qq,免费认证,免费素材等等。要让自己提供的服务,成为其他网站的标准配置。时间久了,流量自然有了。36、内容联盟推广法:这个方法适合有服务器资源的站长。提供一个平台,可以绑定其他网站的域名,把网站的头尾广告位置送给其他站长,吸引其他网站加入。看似是为其他网站做嫁衣裳,实际上是在宣传自己的网站,扩大了网站知名度和影响力。网络上流量最大的地方不是搜索网站,而是其他网站。搜索网站流量大,但是平均到每个站,也就几个几十个,对自己实际意义不大。拉到一个站长,胜过拉到几千个网民。这种方法长期而持久。37、威逼强迫推广法:比如网站**miibeian、各地公共安全局,都可以强迫网站放链接。一般人用不了。不过可以变相使用,比如黑客加链接法。38、做大做强推广法:比如门户站。让小网站以加自己网站的链接为荣。尽管很少有站从门户网站得到一星半点的好处,但是对强者天然的崇拜心理,仍然让无数站长不由自主地献身链接,并以此为光荣。至于人家是否留意和领情,则是另外一回事了。39、客户端软件插件推广法:有技术含量的站长可以采用此法。开发流行的网民常用的客户端软件,比如聊天工具类软件qq,网络游戏类工具,下载工具类网站迅雷等等,都可以弹出窗口,可以直接弹网站首页,也可以弹一些活动页。效果奇好。40、收费资源免费推广法:比如长久提供软件注册码,注册号,序列号,免序列号版软件,提高网站粘性。比如操作系统的ghost版本,养活了好几个日访问量几十万ip的网站。41、群组推广法:如今的web2.0等社交网站,都有这个功能。在群组里广发消息,吸引注意力。42、发布任务推广法:在威客网站发布任务,不仅能够吸引接受任务的人,而且能够吸引一大批旁观者。要充分利用这种一对多的传播优势。43、印发宣传单线下宣传推广法:既可以自己印发,也可以和其他传统企业合作,使用它们的现有渠道。比如和超市合作,在购物小票上印制自己网站的网址。可以拿网站上的资源和超市交换。44、流量交换联盟推广法:加入流量交换联盟,运用专业的流量交换系统平台,直接和其他网站交换流量,互惠互利,共同发展。45、鼓励访客宣传推广法:至于如何打动网民口碑宣传,则要根据网站内容,灵活安排了。一般新奇有趣互动性的内容效果教好。比如测试类啊、评比类啊、节日祝福类啊、搞怪类啊等等内容的网页容易被强烈传播。可以考虑自己的网站如何发掘这方面的素材。46、名片推广法:在名片上,手册上,一切自己能掌控的纸上,印上网址、写上网址。47、电子邮件签名推广法:在电子邮箱的设置里,设置一下。加上网站网址和网站介绍。以后写信就会自动加上,自己就省事不少。48、网上竞赛推广法:比如美女评比、网站评比等等各种资格赛的评比。49、付费推广法:如果一些方法免费行不通。只要性价比合适,出去一个,可以收回两个,不妨付费推广。舍得舍得,舍不去的还会跑回来的。50、分工合作推广法:社会效率的提高一个是工具自动化水平的提高,另一个是分工的价值。自己的能力有限,善于整合外部力量,雇用别人推广,把专业的事情交给专业的人来做,可以达到事半功倍的效果。51、按效果付费推广法:如果你有可以出售的资源,不妨在网络上以按效果付费的方法推广,可以免费得到大量的流量。52、设为主页和加入收藏推广法:如果你站的内容足够好,访问者也许愿意长期访问你的网站。在这一点上,要多费点心思提醒网民哦。53、厕所绘画推广法:这种方法慎用,已经有得不偿失的先例。不推荐使用。54、搞活动推广法:各种线下活动,各种聚会等。55、广场效应推广法:在身上衣服上画上网址,去人多的地方引人瞩目。最好是在记者出没的地方,容易产生新闻效应。因为记者整天没事干,最喜欢这类八卦事情。56、贺卡推广法:当别人送贺卡的时候,就顺便推广了你的网站。57、事件连锁反应推广法:炒作。具体就是挑战人们的心理承受底线,锻炼人们的心理承受能力。58、问答网站推广法:像在百度知道、新浪爱问这些问答网站,选择一些网站的关键词去回答别人的问题。或者自问自答。59、百科网站推广法:去网上的百科全书添加内容。60、RSS推广法:有很多rss聚合类网站,可以制作自己网站的rss,提交到这些网站。61、网吧推广法:如果有一些网吧资源,可以让网吧的老板帮忙把网吧的机子主页设为自己的网站。62、站长交流推广法:多和其他站长交流,探讨推广方法。说不定什么时候就有意外惊喜。在和别人的经验交流中也往往会有灵感的火花跳跃。不要吝啬你自己的经验,在告诉别人的时候,也是对自己经验的一次系统化、条理化、理性化提纯。63、网页病毒推广法:利用其他网站的dns漏洞、服务器漏洞,程序漏洞等,直接挂上自己的网站,迅速提高网站普及率。这是最强悍的另类推广方法。属于被清理的方法之列。64、过路费推广法:如果你有电信等方面的资源,掌握了网页的传输通道,可以将每个网页都进行完善,加进你想加入的内容。65、域名推广法: 人是会犯错的动物。研究高流量网站的域名,分析其错误拼写的各种可能,注册相应域名,也可以从中得到不少流量。如果应用在网站内容建设上,则可以以热门内容的错误拼写文字来建设和优化内容。66、分类信息推广法:去各类分类信息站发布网站信息。67、免费域名推广法:给其他站提供二极域名,或者去申请其他站的免费域名指到自己的站,都可以。68、聊天室推广法:其实和QQ群推广差不多,就是在在各种聊天室去和大家聊天,搞好相互关系,适当的时候发一些网站的链接推广。注意给出一个必须发链接的理由。69、演讲推广法:举办各种讲座,演讲,不知不觉地给网站吸引来新访客。70、特殊资源推广法:比如高考查询,英语四六级查询等资源,是利益相关者不得不访问的。71、模仿推广法:处处留心皆学问。学习其他网站的推广方法,看看其他网站的链接都出现在了什么地方,想办法依葫芦画瓢。模仿是创新的基础,创新是模仿的升华。创新=模仿+经验积累+批量化+自动化。72、被动推广法:提高网站质量,做一个对网民有独特帮助的网站,让网民喜欢你的网站,让网民自发地传播你的网站,是效果最好的推广方法。73、化整为零推广法:在各大商务网站上,建立网站的副版本。借用其他网站的平台,推广自己的东西。74、预告推广法:也叫系列法。不要将宝贵的内容一次性全部提供,每天提供一点点,连续几个星期、几个月,让网民不断重复地访问网站。类似电视台播放电视剧和报纸的小说连载等等模式。比如赤壁,拦腰劈成两半,就能卖两倍价钱,赚双倍票房。搞网站也要学会这种留一手的做法。75、创建品牌推广法:其实品牌建设并不难,非常简单。网上信息浩如烟海,陈旧信息充斥在各个网站,价值极其微小。站长们可以持续搜集某个主题信息,根据最新条件和情况,不断对原先的旧内容维护、补充和更新,按照日期顺序有规律地发布到其他网站,提高网站影响力。当人们需要该方面信息的时候,唯一的去处就是此类信息发源地了,建立品牌就是这么容易。有了品牌知名度,网站自然而然有了流量,顺便也能带活整个网站。例如中关村在线的电脑配件报价,百度的搜索排行榜,雪缘园足球即时比分。76、多语言版本推广法:利用一些网站提供的免费翻译功能,建设不同语言版本的网站,比如繁体版,英文版等等,扩大网站的适用人群。77、免费建站程序推广法:开发一套网站程序,免费提供给别人使用。网站程序里少不了带上开发者的版权链接。目前流行非流行的博客程序、论坛程序等开发者网站,流量大的吓人。有点能力的站长朋友何不学习一下呢。即使开发不了完整版,搞个二次开发,推出美化版、各类主题版,发布到各类源码站。78、网站模板推广法:这个容易理解,用网页建筑师html、网页美容师css、网页魔术师java script 给流行的网站程序设计新界面,发布到对应网站,在发布的时候,可以留下网站的模板地址的,例如提供上述模板等等,这样可以获得很高的曝光率。模板其实很容易制作的,改下颜色,改下字体,变变页面元素位置即可。只要用心,没有做不到的。关键是学会思路,凡事心中有谱。79、讲故事出书推广法:书籍可以被长久反复阅读,对人们的影响是非常大的,网站也能给人留下不可磨灭的印象。80、创造新概念推广法:让新概念成为网站的代名词。当人们使用这个概念的时候,自然就宣传了你的网站。给人们先入为主的信息,融入人们的生活之中,这样的宣传效果,具有不可动摇的地位。概念的名称可以固定,概念的内容却可以常变常新,满足人们持久而不断变化的需要。81、改名推广法:将城市名称、公司名称、道路、人名、昵称、建筑物名称或者社区名称等等实体的名字,修改设置为网站地址。这样做的话,网址的曝光率和使用频率会非常高,网站也会非常自然地出现在各种名单中,比如地图上,新闻报道里,人们的日常交往中。总之,传播效率和传播有效性都会非常高。82、月历墙纸推广法:制作各种精美独特风格多样的月历图片,提供给人们做电脑的桌面墙纸壁纸使用。只要网民一打开电脑,你的网址就跃然pc上。一年300多天,天天都在提醒网民,你的网站对其有用。83、征婚推广法:在各类报刊杂志网络上以整版的方式征婚,联系方式就仅仅留下网址。不仅可以吸引应征者,也可以吸引无数喜欢猎奇的闲极无聊的大量人群。具体做法可以参考以往的“征婚门”事件。84、公交车站推广法:在都市的热门地段设置一个车站,乘车的人必然能够留意到,绕都绕不过去。此方法最适合公交公司。85、地图推广法:让网站总部出现在地图上。地图传播面广,受众大,使用频率高。此法适合财大气粗有特殊关系者。研究研究你所在地方的地图,看看有什么公司的名字出现在上面,想想人家是怎么出现在上面的,模仿一下吧。如果做不到,那么求人不如求己,让自己的网站成为一张地图,一个平台。86、吹捧推广法:要让网站成为网民心中的唯一,只有抬高身价,自吹自擂,让网民相信,你是最好的,你是最棒的,你就是名牌。让网民访问贵站,成为一种身份的象征,成为显耀自身价值的标志,极大地满足人们的虚荣心。这个可以通过设置访问限制来达到。人们天生对打破限制有一种狂热的喜好。本来平淡无奇的东西,一旦设置了限制,身价就高了。人们始终不明白一个道理:世界上最有价值的东西是免费的。87、出入口推广法:在茫茫人海中,每个人都在各个入口和出口里进进出出,徘徊奔波,寻找活着的乐趣和存在的意义。它们找到了吗?你也许可以为之做点什么。88、招聘推广法:如今科技和社会发展,机器工具代替人们劳作的趋势越来越明显,没事可干就成了一种普遍的社会现象,工作岗位成了一种稀缺资源,“为人民服务”的口号成为争权夺利的代名词,为人民服务不再光荣,主动放弃自己不能胜任的岗位才是光荣的,可是,有谁乐意放弃呢?可以预见的是,在不久的将来,自动化工具完全代替人类的重复性劳动,所有人都将没事可干,人人要靠社会保障生存,可是,如今普遍的社会生存保障在哪里呢?既然获取为人民服务的资格如此艰苦,那么以招聘的名义,去招聘会上宣传网站,效果想来一定差不到什么地方。89、立碑推广法:石头是疯狂的,疯狂的石头,是可以让无数东西千古流芳的。石头的寿命远远超过人的寿命和数字化存储载体的生命周期。古往今来,能够流传下来的,都是以石头为载体的。人脑太不可靠,只有石头值得信赖。在繁华地带或者名山大川立个碑,其宣传的效果是非常久远的。甚至可以被史后时期的人看到。但是,到那个时候,你的网站还能访问吗?90、故事推广法:人是感性的动物。人们不喜欢理性的说教,但是这不代表人们不喜欢经过故事包装或伪装的说教。尽管明眼人一眼就知道怎么回事,但是在100万个人中,你能找到一个明眼人吗?这是比大海捞针的难度系数还高上千倍万倍的极限任务。买椟还珠的故事在人们的消费行为中时时刻刻上演,所以,请不要忽视包装的效果。如果有可能,就把你的推广行为用故事润色一下,给人们口碑相传贵站一个足够分量的理由。只要一个理由,一切都可以风生水起,面朝大海,春暖花开。让网站的名称,成为整个故事的线索,成为故事走向完美结局的核心要素,成为不可磨灭的一部分。人们就算把整个故事情节都忘记了,也会依稀记得你的网站在其中的独特作用。动人的故事,动人的网站,动人的宣传推广效果,动人的提醒暗示功能。91、信仰推广法:刺激人们有几个手段、途径和层次,“立,礼,理、利、力”,越往后越低级,越接近兽|性。“立”就是树立信仰,创造理想和心愿,从根本上变化人的思维模式和行为模式。“礼”就是让事情充满趣味性,人是喜欢测验自己思维能力的家伙,把简单的事情人为地搞复杂是人经常玩的智力游戏,它们宁愿柳暗花明地瞎折腾也不喜欢一路顺风。“理”就是讲事实摆道理,用美好的“活着、活好和活得长久”的对错价值观和消除破坏性增强建设性的逻辑达成共识。“利”就是用彼方面的利益来弥补此方面利益的缺失。这是一种亏处有补的让步和交换行为模式。“力”就是以强制力为后盾的兽|性行为方式。把“力”关到笼子里,才是人性的做法。人性是以创造和分享为手段,以人人自由如意为目标的公益事物。而兽|性是以争抢和独占为手段,以无穷的欲望满足为企图的破坏性事物。值得注意的是,人是兽|性和人性并存的事物。判断一个人成熟程度的标志,就是以其行为上的人性程度来衡量的。任何一个人,对任何刺激,都同时存在兽|性和人性两种情绪和想法,没有人可以例外,这是人为无法控制的。人可以控制的是自己的最终选择。“听话听内容,看人看行动”,思想什么都不是,重要的是看这个人(群体)在行动上的反应情况。行为的人性化程度,才体现了一个人 (群体)的素质和价值。92、赞助推广法:对于有价值的公益事情,要积极地参与,这种在客观上酷似AA制的打包推广手段,可以节省不少开支。与其把广告费交给私有群体,不如拿来改善人类的生存处境,既达到了原先的宣传效果,又在客观上做了好事,一举两得一石二鸟一箭双雕一语双关,既有利益又有意义,何乐而不为?93、公共元素推广法:研究各类网站,观察和思考一下这些网站有什么公共的雷同的东西。开发工具和系统,给这些网站提供统一的服务,免除这些网站的重复性的劳动。比如统计服务、留言服务、客服系统、日历系统、聚合服务、搜索服务、友情链接服务、图片服务、帐户服务、支付系统……其实,没有什么是不可以分拆的,需要解决的问题是信任。94、线下实物推广法:赠送免费的纸质日历给人们。举一反三融会贯通敲山震虎打草惊蛇地推而广之,赠送免费手机、免费午餐、免费住宿、免费资格、免费门票、免费春联、免费杀毒软件、免费代码、免费服装、免费书籍、免费玩具、免费电话等等等等。自己想去吧。一切收费的都可以免费提供,只要间接收获的投入产出比性价比合算划算。提醒一下,你要让人们看到你自己的利益所在,否则人们会因害怕和难以置信而不敢接受。这是免费爱心东西在金钱时代遭遇的一个信任危机,也是金钱的负面效应的作用结果。95、免费算命推广法:命运是固定的,算不算都一个样,正所谓“命运天注定,半点不由人”。“我是谁”这个问题的标准答案是,“我不是我,我是规律的傀儡”。既然人们有这个需要,给算一下也无妨。给人免费算命,建议人们把名字改为你的网站地址,如果成功,你就多了一个忠实的终身义务宣传员。这样的人走到哪里,你的网站就亮到哪里。实在没人改,就改你自己的名字吧。96、与朋友分享独门秘籍推广法:为了防止好方法失传,强烈建议您公开出来。事物只使用才有价值。价值在使用的过程中才能激发出来。97、卖站推广法:就说我现在的网站有一万个流量,现三百块低价出售,贴出网址,这样大家都过来看。98、人工扛牌推广法:穿个有公司独特印记的T恤,找个美女,性感的美女,去人流量大的地方,这对地方站有特效。99、图书推广法:搞个图书,在封面上打上网址就行了。 100、免费赠送推广法:批发一批有意思的小玩意,在论坛上免费派送,但是要收快递费的。而快递费赚的钱就是产品的本钱,这样就积累了人气,自己也不亏本。101、修电脑推广法:这个适合地方站。给用户免费装机,装机后给他设个默认首页就行了。102、媒体联合推广法:同样适合地方站,找当地的媒体和他们一起推广,借力打力。103、作小推广法:把自己的网站看低,主动去别的论坛上发贴,例如发布:站长您好,我的网站是希望和贵站交换友情链接,可否?请求对方给个友情链接,这样不算广告贴,对方不会删除你的。这样就留下了外链。104、作大推广法:说白了就是吹,吹自己是中国最X的网站,这样好奇心就吸引人来了。105、模仿推广法:现在色站基本上都关了,但是有很多站长起个色站的名字,内容却不色。这样在搜索中搜索的时候就会来到他们的网站上。 106、热点推广法:关注各个电台、各大网站的新闻。看上面报道的事件和人物,然后重点更新该事件和人物。这样非常容易引起搜索的关注。107、博客评论推广法:这个不要说了,大家都知道的。108、最后一条:是无为而治。重点作好站的内容就行了。 在一个地方有效的方法,是否可以普及运用到所有其他网站、所有地方。不要怕麻烦,不要怕徒劳无功,不要怕白白付出,不要急功近利。很多方法的效果不是一两天内就能看到的,而是一种长期的量的积累。只要推广久了,效果自然非同凡响。 以上大多是收集整理的资料,也有一部分是自己在推广工作中的一点经验积累,拿出来与大家一起分享。心里忐忑不安。我知道在这里藏龙卧虎,我的这些雕虫小技是不是有些班门弄斧。但我依然在这里发布出来,不是指望什么,而是希望能够开拓大家的思维!
2011年07月15日
17 阅读
0 评论
0 点赞
2011-07-15
Linux下LAMP(Apache+PHP+MySql)环境配置
LAMP是一个缩写Linux+Apache+MySql+PHP,它指一组通常一起使用来运行动态网站或者服务器的自由软件:* Linux,操作系统;* Apache,网页服务器;* MySQL,数据库管理系统(或者数据库服务器);* PHP 和有時 Perl 或 Python,脚本语言。今天介绍一下Linux下LAMP(Apache+PHP+MySql)环境配置:1、下载软件MySql:wget http://down1.chinaunix.net/distfiles/mysql-5.0.56.tar.gzApache:wget http://apache.freelamp.com/httpd/httpd-2.2.13.tar.gzPHP:wget http://125.39.113.23:9203/CDE349DEF7D7A6AC19DE5771F752CA258C693F634815D4BE/cn.php.net/distributions/php-5.2.10.tar.bz22、安装MySql安装步骤:tar zxvf mysql-5.0.56.tar.gzcd mysql-5.0.56./configure –prefix=/usr/local/mysql –sysconfdir=/etc –localstatedir=/var/lib/mysqlmakemake install#prefix=/usr/local/mysql mysql安装的目标目录#sysconfdir=/etc my.ini配置文件的路径#localstatedir=/var/lib/mysql 数据库存放的路径安装完以后要初始化数据库,当然你是升级的话不用做这步;/usr/local/mysql/bin/mysql_install_db如果系统没有mysql这个用户的话,最好做以下这步:useradd -M -o -r -d /var/lib/mysql -s /bin/bash -c “MySQL Server” -u 27 mysql然后我启动mysql/usr/local/mysql/bin/safe_mysqld &ok,先看看mysql能否正常工作mysql -uroot mysql一般情况下都是不能正常链接数据库,错误提示一般为:ERROR 2002: Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)其实网上大家问的最多的都是整个问题,说什么链接不到mysqld.sock,其实大家不妨看看mysql的错误日志就明白怎么回事,我这里的错误日志是在/var/lib/mysql/*.err 你会发现mysql只所以不能启动,是因为/var/lib/mysql的权限不允许mysql服务访问,英文mysql默认是调用mysql用户来启动服务的,好了,既然知道是什么原因找到不能启动,那就简单了。我们只要chown -R mysql:mysql /var/lib/mysql 就行,如果还是启动不了,再慢慢调试权限,反正一般启动不了都是权限的问题。如果大家还是不能启动不了的话,那就用我的比较繁琐的权限的设置,反正我每次都是这么做的,一般不会有问题,见下:chown -R root /usr/local/mysqlchgrp -R mysql /usr/local/mysqlchown -R root /usr/local/mysql/binchgrp -R mysql /usr/local/mysql/binchgrp -R mysql /var/lib/mysqlchmod 777 /var/lib/mysqlchown -R root /var/lib/mysql/mysqlchgrp -R mysql /var/lib/mysql/mysqlchmod 777 /var/lib/mysql/mysqlchown -R root /var/lib/mysql/mysql/*chgrp -R mysql /var/lib/mysql/mysql/*chmod 777 /var/lib/mysql/mysql/*chmod 777 /usr/local/mysql/lib/mysql/libmysqlclient.a做完上面的步骤,然后把你编译目录的一个脚本COPY过去cp support-files/mysql.server /etc/rc.d/init.d/mysqldchkconfig –add mysqld用ntsysv设置使mysql每次启动都能自动运行。好了,至此mysql安装完毕,你可以这样起动你的mysql服务/etc/rc.d/init.d/mysqld start下面这步比较关键,ln -s /usr/local/mysql/lib/mysql /usr/lib/mysqlln -s /usr/local/mysql/include/mysql /usr/include/mysql大家可以不做这步,大可以在编译其他软件的时候自定义myslq的库文件路径,但我还是喜欢把库文件链接到默认的位置,这样你在编译类似PHP,Vpopmail等软件时可以不用指定mysql的库文件地址。3、安装Apachetar zvxf httpd-2.2.13.tar.gzcd httpd-2.2.13修改src/include/httpd.h 增大最大线程数#define HARD_SERVER_LIMIT 256改成#define HARD_SERVER_LIMIT 2560保存退出编译apache./configure –prefix=/usr/local/apache –enable-module=so –enable-module=rewrite –enable-shared=max –htdocsdir=/var/www &&makemake install#这里我们通过enable-module参数告诉设置脚本,我们需要启动so和rewrite模块,so模块是用来提DSO支持的apache核心模块,而rewrite模块则是用意实现地址重写的模块,由于rewrite模块需要DBM支持,如果在初次安装时没有编译进apache,以后需要用到时需要重新编译整个apache才可以实现。为此除非你可以确定以后不会用到rewrite模块,否则还是建议你在第一次编译的时候把rewrite模块编译好。enable-shared=max 这个参数的作用时编译apache时,把除了so以外的所有apache的标准模块都编译成DSO模块。而不是编译进apache核心内。好了安装apache很简单的哦,启动apache看看/usr/local/apache/bin/apachectl start然后 通过浏览器查看http://youhost/,如果正常则说明安装成功。4、安装PHPtar zvxf php-5.2.10.tar.bz2cd php-5.2.10(1)./configure \–prefix=/usr/local/php \–with-mysql=/usr/local/mysql \–enable-force-cgi-redirect \–with-freetype-dir=/usr \–with-png-dir=/usr \–with-gd –enable-gd-native-ttf \–with-ttf \–with-gdbm \–with-gettext \–with-iconv \–with-jpeg-dir=/usr \–with-png \–with-zlib \–with-xml \–enable-calendar \–with-apxs=/usr/local/apache/bin/apxs(2)make(3)make install#我这里由于服务器需要用到GD库,所以加了一些支持GD的编译参数,GD直接用了redhat自带的GD库,大家没有安装的话可以从安装盘安装,注意除了安装GD以外,还要安装libjpeg,libpng等库文件。另外–with-mysql=/usr/local/mysql指向你安装mysql的路径。–with-apxs指向apache的apxs文件的路径。vi /usr/local/apache/conf/httpd.conf查找在此范围添加AddType application/x-httpd-php .phpAddType application/x-httpd-php-source .phps然CPOPY PHP的配置文件cp ../php-5.2.10/php.ini.dist /usr/local/php/lib/php.ini修改php.ini文件register_globals = Onok!重新启动一下apache服务器/usr/local/apache/bin/apachectl restart然后写个php测试页info.php:内容如下<?phpphpinfo();?>正常的话,应该能看到php的信息了,恭喜你的Apche+Mysql+PHP安装成功。
2011年07月15日
21 阅读
0 评论
0 点赞
2011-07-14
ASP.NET 缓存 方法和最佳实践
在 ASP.NET 提供的许多特性中,缓存支持无疑是我最欣赏的特性,我这样说当然是有充分理由的。相比 ASP.NET 的所有其他特性,缓存对应用程序的性能具有最大的潜在影响,利用缓存和其他机制,ASP.NET 开发人员可以接受使用开销很大的控件(例如,DataGrid)构建站点时的额外开销,而不必担心性能会受到太大的影响。为了在应用程序中最大程度地利用缓存,您应该考虑在所有程序级别上都实现缓存的方法。Steve 的缓存提示尽早缓存;经常缓存您应该在应用程序的每一层都实现缓存。向数据层、业务逻辑层、UI 或输出层添加缓存支持。内存现在非常便宜 — 因此,通过以智能的方式在整个应用程序中实现缓存,可以获得很大的性能提高。缓存可以掩盖许多过失缓存是一种无需大量时间和分析就可以获得“足够良好的”性能的方法。这里再次强调,内存现在非常便宜,因此,如果您能通过将输出缓存 30 秒,而不是花上一整天甚至一周的时间尝试优化代码或数据库就可以获得所需的性能,您肯定会选择缓存解决方案(假设可以接受 30 秒的旧数据)。缓存正是那些利用 20% 付出获得 80% 回报的特性之一,因此,要提高性能,应该首先想到缓存。不过,如果设计很糟糕,最终却有可能带来不良的后果,因此,您当然也应该尽量正确地设计应用程序。但如果您只是需要立即获得足够高的性能,缓存就是您的最佳选择,您可以在以后有时间的时候再尽快重新设计应用程序。页面级输出缓存作为最简单的缓存形式,输出缓存只是在内存中保留为响应请求而发送的 HTML 的副本。其后再有请求时将提供缓存的输出,直到缓存到期,这样,性能有可能得到很大的提高(取决于需要多少开销来创建原始页面输出 – 发送缓存的输出总是很快,并且比较稳定)。实现要实现页面输出缓存,只要将一条 OutputCache 指令添加到页面即可。<%@ OutputCache Duration="60" VaryByParam="*" %>如同其他页面指令一样,该指令应该出现在 ASPX 页面的顶部,即在任何输出之前。它支持五个属性(或参数),其中两个是必需的。 Duration 必需属性。页面应该被缓存的时间,以秒为单位。必须是正整数。 Location 指定应该对输出进行缓存的位置。如果要指定该参数,则必须是下列选项之一:Any、Client、Downstream、None、Server 或 ServerAndClient。 VaryByParam 必需属性。Request 中变量的名称,这些变量名应该产生单独的缓存条目。”none” 表示没有变动。”*” 可用于为每个不同的变量数组创建新的缓存条目。变量之间用 “;” 进行分隔。 VaryByHeader 基于指定的标头中的变动改变缓存条目。 VaryByCustom 允许在 global.asax 中指定自定义变动(例如,”Browser”)。 利用必需的 Duration 和 VaryByParam 选项的组合可以处理大多数情况。例如,如果您的产品目录允许用户基于 categoryID 和页变量查看目录页,您可以用参数值为 “categoryID;page” 的 VaryByParam 将产品目录缓存一段时间(如果产品不是随时都在改变,一小时还是可以接受的,因此,持续时间是 3600 秒)。这将为每个种类的每个目录页创建单独的缓存条目。每个条目从其第一个请求算起将维持一个小时。VaryByHeader 和 VaryByCustom 主要用于根据访问页面的客户端对页面的外观或内容进行自定义。同一个 URL 可能需要同时为浏览器和移动电话客户端呈现输出,因此,需要针对不同的客户端缓存不同的内容版本。或者,页面有可能已经针对 IE 进行了优化,但需要能针对 Netscape 或 Opera 完全降低优化(而不仅仅是破坏页面)。后一个例子非常普遍,我们将提供一个说明如何实现此目标的示例:示例: VaryByCustom用于支持浏览器自定义为了使每个浏览器都具有单独的缓存条目,VaryByCustom 的值可以设置为 “browser”。此功能已经内置在缓存模块中,并且将针对每个浏览器名称和主要版本插入单独的页面缓存版本。<%@ OutputCache Duration="60" VaryByParam="None" VaryByCustom="browser" %>片段缓存,用户控件输出缓存缓存整个页面通常并不可行,因为页面的某些部分是针对用户定制的。不过,页面的其他部分是整个应用程序共有的。这些部分最适合使用片段缓存和用户控件进行缓存。菜单和其他布局元素,尤其是那些从数据源动态生成的元素,也应该用这种方法进行缓存。如果需要,可以将缓存的控件配置为基于对其控件(或其他属性)的更改或由页面级输出缓存支持的任何其他变动进行改变。使用同一组控件的几百个页面还可以共享那些控件的缓存条目,而不是为每个页面保留单独的缓存版本。实现片段缓存使用的语法与页面级输出缓存一样,但其应用于用户控件(.ascx 文件)而不是 Web 窗体(.aspx 文件)。除了 Location 属性,对于 OutputCache 在 Web 窗体上支持的所有属性,用户控件也同样支持。用户控件还支持名为 VaryByControl 的 OutputCache 属性,该属性将根据用户控件(通常是页面上的控件,例如,DropDownList)的成员的值改变该控件的缓存。如果指定了 VaryByControl,可以省略 VaryByParam。最后,在默认情况下,对每个页面上的每个用户控件都单独进行缓存。不过,如果一个用户控件不随应用程序中的页面改变,并且在所有页面都使用相同的名称,则可以应用 Shared=”true” 参数,该参数将使用户控件的缓存版本供所有引用该控件的页面使用。示例<%@ OutputCache Duration="60" VaryByParam="*" %>该示例将缓存用户控件 60 秒,并且将针对查询字符串的每个变动、针对此控件所在的每个页面创建单独的缓存条目。<%@ OutputCache Duration="60" VaryByParam="none" VaryByControl="CategoryDropDownList" %>该示例将缓存用户控件 60 秒,并且将针对 CategoryDropDownList 控件的每个不同的值、针对此控件所在的每个页面创建单独的缓存条目。<%@ OutputCache Duration="60" VaryByParam="none" VaryByCustom="browser" Shared="true %>最后,该示例将缓存用户控件 60 秒,并且将针对每个浏览器名称和主要版本创建一个缓存条目。然后,每个浏览器的缓存条目将由引用此用户控件的所有页面共享(只要所有页面都用相同的 ID 引用该控件即可)。缓存 API,使用 Cache 对象页面级和用户控件级输出缓存的确是一种可以迅速而简便地提高站点性能的方法,但是在 ASP.NET 中,缓存的真正灵活性和强大功能是通过 Cache 对象提供的。使用 Cache 对象,您可以存储任何可序列化的数据对象,基于一个或多个依赖项的组合来控制缓存条目到期的方式。这些依赖项可以包括自从项被缓存后经过的时间、自从项上次被访问后经过的时间、对文件和/或文件夹的更改以及对其他缓存项的更改,在略作处理后还可以包括对数据库中特定表的更改。在 Cache中存储数据在 Cache 中存储数据的最简单的方法就是使用一个键为其赋值,就像 HashTable 或 Dictionary 对象一样:Cache["key"] = “value”;这种做法将在缓存中存储项,同时不带任何依赖项,因此它不会到期,除非缓存引擎为了给其他缓存数据提供空间而将其删除。要包括特定的缓存依赖项,可使用 Add() 或 Insert() 方法。其中每个方法都有几个重载。Add() 和 Insert() 之间的唯一区别是,Add() 返回对已缓存对象的引用,而 Insert() 没有返回值(在 C# 中为空,在 VB 中为 Sub)。示例Cache.Insert("key", myXMLFileData, new System.Web.Caching.CacheDependency(Server.MapPath("users.xml")));该示例可将文件中的 xml 数据插入缓存,无需在以后请求时从文件读取。 CacheDependency 的作用是确保缓存在文件更改后立即到期,以便可以从文件中提取最新数据,重新进行缓存。如果缓存的数据来自若干个文件,还可以指定一个文件名的数组。Cache.Insert("dependentkey", myDependentData, new System.Web.Caching.CacheDependency(new string[] {}, new string[] {"key"}));该示例可插入键值为 “key” 的第二个数据块(取决于是否存在第一个数据块)。如果缓存中不存在名为 “key” 的键,或者如果与该键相关联的项已到期或被更新,则 “dependentkey” 的缓存条目将到期。Cache.Insert("key", myTimeSensitiveData, null, DateTime.Now.AddMinutes(1), TimeSpan.Zero);绝对到期:此示例将对受时间影响的数据缓存一分钟,一分钟过后,缓存将到期。注意,绝对到期和滑动到期(见下文)不能一起使用。Cache.Insert("key", myFrequentlyAccessedData, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(1));滑动到期:此示例将缓存一些频繁使用的数据。数据将在缓存中一直保留下去,除非数据未被引用的时间达到了一分钟。注意,滑动到期和绝对到期不能一起使用。更多选项除了上面提到的依赖项,我们还可以指定项的优先级(依次为 low、high、NotRemovable,它们是在 System.Web.Caching.CacheItemPriority 枚举中定义的)以及当缓存中的项到期时调用的 CacheItemRemovedCallback 函数。大多数时候,默认的优先级已经足够了 — 缓存引擎可以正常完成任务并处理缓存的内存管理。CacheItemRemovedCallback 选项考虑到一些很有趣的可能性,但实际上它很少使用。不过,为了说明该方法,我将提供它的一个使用示例:CacheItemRemovedCallback示例System.Web.Caching.CacheItemRemovedCallback callback = new System.Web.Caching.CacheItemRemovedCallback (OnRemove); Cache.Insert("key",myFile,null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.Zero, System.Web.Caching.CacheItemPriority.Default, callback); . . . public static void OnRemove(string key, object cacheItem, System.Web.Caching.CacheItemRemovedReason reason) { AppendLog("The cached value with key '" + key + "' was removed from the cache. Reason: " + reason.ToString()); }该示例将使用AppendLog()方法(这里不讨论该方法,请参阅 Writing Entries to Event Logs)中定义的任何逻辑来记录缓存中的数据到期的原因。通过在从缓存中删除项时记录这些项并记录删除的原因,您可以确定是否在有效地使用缓存或者您是否可能需要增加服务器上的内存。注意,callback 是一个静态(在 VB 中为 Shared)方法,建议使用该方法的原因是,如果不使用它,保存回调函数的类的实例将保留在内存中,以支持回调(对 static/Shared 方法则没有必要)。该特性有一个潜在的用处 — 在后台刷新缓存的数据,这样用户永远都不必等待数据被填充,但数据始终保持相对较新的状态。但实际上,此特性并不适用于当前版本的缓存 API,因为在从缓存中删除缓存的项之前,不触发或不完成回调。因此,用户将频繁地发出尝试访问缓存值的请求,然后发现缓存值为空,不得不等待缓存值的重新填充。我希望在未来的 ASP.NET 版本中看到一个附加的回调,可以称为 CachedItemExpiredButNotRemovedCallback,如果定义了该回调,则必须在删除缓存项之前完成执行。缓存数据引用模式每当我们尝试访问缓存中的数据时,都应该考虑到一种情况,那就是数据可能已经不在缓存中了。因此,下面的模式应该普遍适用于您对缓存的数据的访问。在这种情况下,我们假定已缓存的数据是一个数据表。public DataTable GetCustomers(bool BypassCache) { string cacheKey = "CustomersDataTable"; object cacheItem = Cache[cacheKey] as DataTable; if((BypassCache) || (cacheItem == null)) { cacheItem = GetCustomersFromDataSource(); Cache.Insert(cacheKey, cacheItem, null, DateTime.Now.AddSeconds(GetCacheSecondsFromConfig(cacheKey), TimeSpan.Zero); } return (DataTable)cacheItem; }关于此模式,有以下几点需要注意: 某些值(例如,cacheKey、cacheItem 和缓存持续时间)是一次定义的,并且只定义一次。 可以根据需要跳过缓存 — 例如,当注册一个新客户并重定向到客户列表后,最好的做法可能就是跳过缓存,用最新数据重新填充缓存,该数据包括新插入的客户。 缓存只能访问一次。这种做法可以提高性能,并确保不会发生 NullReferenceExceptions,因为该项在第一次被检查时是存在的,但第二次检查之前就已经到期了。 该模式使用强类型检查。C# 中的 “as” 运算符尝试将对象转换为类型,如果失败或该对象为空,则只返回 null(空)。 持续时间存储在配置文件中。在理想的情况下,所有的缓存依赖项(无论是基于文件的,或是基于时间的,还是其他类型的依赖项)都应该存储在配置文件中,这样就可以进行更改并轻松地测量性能。我还建议您指定默认缓存持续时间,而且,如果没有为所使用的 cacheKey 指定持续时间,就让 GetCacheSecondsFromConfig() 方法使用该默认持续时间。 相关的代码示例是一个 helper 类,它将处理上述所有情况,但允许通过一行或两行代码访问缓存的数据。请下载 CacheDemos.msi。小结缓存可以使应用程序的性能得到很大的提高,因此在设计应用程序以及对应用程序进行性能测试时应该予以考虑。应用程序总会或多或少地受益于缓存,当然有些应用程序比其他应用程序更适合使用缓存。对 ASP.NET 提供的缓存选项的深刻理解是任何 ASP.NET 开发人员应该掌握的重要技巧。Steven A. Smith 作为 Microsoft ASP.NET最有价值的专家,是 ASPAlliance.com 的总裁,也是该公司的所有者。他还是 ASPSmith Ltd(一家以 .NET 为中心的培训公司)的所有者和首席讲师。他撰写了两本书 — ASP.NET Developer’s Cookbook 和 ASP.NET By Example,并且在 MSDN? 杂志和 AspNetPRO 杂志上发表文章。Steve 每年都要在几个会议上进行演讲,是 INETA Speaker’s Bureau 的成员。Steve 拥有工商管理硕士学位和计算机科学工程的理学学士学位。如果希望与 Steve 联系,请将电子邮件发送至 ssmith@aspalliance.com。
2011年07月14日
16 阅读
0 评论
0 点赞
2011-07-13
Database Optimize patterns
Most of websites and enterprise application rely on the database backing them to store the application and customer data. So at some point the database could be the main performance and scalability bottleneck for your system performance, so I ‘m here today to cure this!Database supporters and resisters:Database supporters: MySQL, SQL Server, and PostgreSQL:MySQL, SQL Server, PostgreSQL, and others is hard competitors, everyone have different philosophy, and features.For example, SQL Server have rich features such as: support UTF16 in the data types, triggers, roles and policies, and integration with .NET, etc. MySQL: Free and open source, many database engines. PostgreSQL: Free and open source, support object-oriented data model.What about the performance?The Database performance is important. In the real and trusted performance benchmark: MySQL faster than SQL Server, and PostgreSQL have good performance better than SQL Server, and almost like MySQL. Also PostgreSQL, MySQL have small footprint, and consume small system resource.Database resisters: HBase, MongoDB, Redis, and others:Does all application really need databases backing them?I believe there is no option can fit in all situations, so not all applications need database. The golden wisdom (in my opinion) said: Every challenge has its own solution.There are many scenario will agreed with Database resisters, such as: Web search engine, Caching, File sharing, etc. In the other hand there are a lot of scenarios agreed with Database supporters, such as: ERP, CRM, E-Commerce, etc.Tiny URL services for example, shouldn’t use Database at all because it’s require very simple needs map a small/tiny URL to the real/big URL. But what we can use beside or instead of Databases?There are a lot of tools that fallowing CAP, BASE model, instead of ACID model. CAP model is about:* Consistency – your data is correct all the time. What you write is what you read.* Availability – you can read and write and write your data all the time.* Partition Tolerance – if one or more nodes fails the system still works and becomes consistent when the system comes on-line.For example in any in-memory or in-disk caching system you will never need all the Database features. You just need CAP like system. Today there are a lot of Documents, and key-value based store systems, such as:* MongoDB Document oriented* CouchDB Document oriented (JSON)* Redis Key-value oriented* Tokyo Cabinet Key-value oriented* Memcached in-memory, Key-value orientedThe above list can work in many scenarios, and they provide good performance more than the Databases, and most of them support distributed, partitions, and they also provide good fault tolerance algorithm.I know after all this there are still people say; Why CAP model or key-value store system, the database is good?The Database is often a performance- and scalability limiting factor in most types of applications, the reality is that relational databases have not changed much in the last 30 years, and for a lot of purposes using a database is akin to running an interstellar spaceship while having an old Volkswagen engine in the engine room!So the first lesson today is: Consider use Key-value store system depend on your needs.Database Optimizing pattern:What to store into the Database?lot of people in our industry think about the Database as fundamental, default, primitive disk based store system, but this is wrong there are too many ways to store the data; beside that you shouldn’t store anything into the Database. In other word, don’t store non-relational data in relational data model.For example if you design a photo sharing website, you shouldn’t store the thumbnails photos into the Database because simply when some user search the brewer will send a lot of requests to view this photos, and making a lot of DB connections is not good, beside this the DBMS will make this process heavy because the DBMS is complex system by nature.So you should think twice before use the Database to store BLOB data.Field data types:In any DBMS you can found many kind of data types, such as: Date, Time, DateTime, Text, BLOB, VarChar, NVarCar (in SQL Server), and so on. If you choice the right data type this will make the database use lower disks space, and the insert/retrieve will run faster. But why I choice think about it? The Database by nature resides in disks and such disks are slow, so if you minimize the size of the stored data this will improve the write and read time. For example don’t use NVarChar data type except if you really need 16 bits Unicode (UTF 16). Also be watchful when you choice Text, NText, BLOB data type because mostly it will store in another location and the row will just hold the a reference to data position, so when you retrieve the data the DBMS will do a lot of seeks.The primary key and the indexes:We usually use it to optimize the retrieve, insert, update, and delete operations in the tables. Create a primary key on each table you create and unless you are really knowledgeable enough to figure out a better plan, make it the clustered index.It’s important to minimize the primary field size and make the inserting always at the end of the table (i.e. make the value of the primary key field always increasing); I suggest use integer and auto increment in the primary key field if it’s possible.To start with create your indexes; you need to plan an indexing strategy at the same time as you plan and design the database. First, and most important, is the clustered index (Primary key). As a rule, every table in an online transactional processing (OLTP) system should get a clustered index. You can only put one clustered index on a given table, so the proper selection of exactly what column or columns to place it on is extremely important.It makes sense to leave the cluster on the primary key if that primary key provides the natural access path, the most common field used to either search the table or relate the table to another.Changing the parameters slightly, if the access path is mostly through another column, says Company Name, this may make a more appropriate clustered index. Another situation is when the table is no longer at the top of the chain, but somewhere in the middle and the most likely avenue of selection for the data is going to come through the foreign key to a parent table. Then the foreign key column becomes a good candidate for the clustered index. A further wrinkle could be added by needing to get the related data in this child table, but based on a date. This would result in a clustered index composed of two columns: the foreign key and the date. As you can see, in a few sentences a number of options were laid out. You need to think this through as you design the system.You may also identify, either during design, testing or monitoring the production system, that other indexes are needed. While multiple indexes on any given table may be needed, you need to keep in mind that each index adds overhead to the system because these values have to be maintained as the data gets modified, which includes inserts, updates and deletes. Further, since indexes are stored by pointing to the clustered index (one of the many reasons you need a clustered index on the table) changes to the clustered index can result in a cascade through all the other indexes on a table. Because of all this, while indexes are good and necessary, restraint must be exercised in their application & use.Data retrieve, SP’s, and Ad-hoc queries:When you submit Ad-hoc query to the DBMS, a number of processes on the server go to work on that query. The purpose of all these processes is to manage the system such that it will provide your data back to you, or store it, in as timely a manner as possible, whilst maintaining the integrity of the data. The processes actually take a time, some time it’s take long time depend on your query complexity.So I suggest using SP (stored procedure) because most of those steps happen statically at compile time (i.e. creation time). For example you can in .NET – LINQ to SQL to import SPs and call it, and using a few changes you can also enforce the LINQ to SQL to use SPs in any insert, update, and delete operation for better performance.Minimize the Ad-hoc queries will make you gain some performance but we can’t enforce the developers to forget this important feature. Beside create SP’s for the complex queries and the usually insert, update, delete operations; I suggest monitoring and tuning the Ad-hoc queries execute plans at stabilization and testing stage.In general try to do the following:- It’s important to return/select the columns and rows you need only.- Avid using Like operation because it’s mostly require full table scan.- Avoid NOT IN, instead use a left outer join – even though it’s often easier to visualize the NOT IN.- Consider use set nocount on at the top of each SP (and set nocount off) at the bottom.- Avid Long-Running, and the distributed transactions.Caching:Caching is fundamental thing in reading intensive application, also caching is important in writing intensive application. If your DBMS support caching system, such as Query Caching in MySQL I suggest to turn it on.Caching the not rapidly changing data such as: Logged-in user’s roles, top most posts, configuration, and Categories into the client/application server memory also is important to minimize the traveling to the server.
2011年07月13日
14 阅读
0 评论
0 点赞
1
...
3
4
5
...
7