Archive

Archive for June, 2007

保存网页为单个文件/Save webpages All-in-one file

June 26th, 2007 Fwolf 3 comments

看到好的网页需要保存到本地的时候,有几种保存方式可选择,保存为网页文件(仅网页)的话,会得到一个html,但是不包含所有的图片等附加文件,保存为网页文件(全部)的话,会得到一个html文件和一个目录,图片等所有附加文件都在目录中,但是要想保存为一个文件并且所有的图片等附加文件还都完整的话,目前只有ie可以实现,那就是保存为mht文件,那么这个mht文件到底是什么呢?

mht其实是一种MHTML文件,MHTML是MIME HTML (Multipurpose Internet Mail Extension HTML)的简称,它的初衷是在邮件中嵌入HTML内容,RFC2557详细描述了文档定义。ie保存的mht文件、html格式的电子邮件、甚至chm文件都采用了MHTML或者相似的技术。

遗憾的是,不同的浏览器对mhtml的支持程度不尽相同,并且不同的浏览器保存的mhtml文件也不一定兼容(本部分内容主要参考自wikipedia):

IE: 自从1999年的ie5就支持保存为mht格式了,但在保存一些复杂页面的时候会出错。 Opera: 自从opera 9.0(build 8264, 发布于2006-3-10)起支持保存mhtml文件。 Firefox: mozilla、firefox系列浏览器到目前为止仍然不直接支持保存mhtml文件功能,虽然个人非常喜欢firefox,但是这的确是个缺点,甚至早在1999年就有人在Bugzilla上提出了这个问题,但没有得到开发人员的足够重视。不过倒是有个插件Mozilla Archive Format地址二)填补了这一空白,但是目前只支持到ff1.5,针对ff2只有一个非官方的build。据说MAF生成的mht文件和微软系列不全兼容。 Safari: 自动2005年4月29日的2.0版本,苹果上的safari支持保存网页为mhtml文件,但是却不支持显示mhtml文件。

由于浏览器对mhtml的支持相当的不统一,mhtml的使用受到了很大的限制,就我个人的感觉,还是以微软系列的mht为主流,甚至kde上还有一款kmhtConvert软件,可以把微软的mht格式转换为kde的mhtml格式——war文件。

由于mhtml的原理,所有支持mhtml的浏览器或插件采用的方式大多是变相的文件打包的方式,也就是相当于把网页完整保存下来,然后把html文件和目录下的图片等其他文件通过某种方法进行大包,并更改html文件中的链接,通过特殊的链接格式引用包中的资源文件。其实,除了mhtml以外,我们还有另外一个选择,那就是data: URI scheme


data: URI scheme和mhtml的不同之处在于,mhtml解决问题的方式是对多个文件打包,而data: URI则是直接把文件的内容包含在地址当中。比如我引用了一个图片文件http://www.fwolf.com/favorite.ico,mhtml的做法是把这个ico文件打包进去,而data: URI则是直接把地址http://www.fwolf.com/favorite.ico替换为诸如data: image/png; base64, iVBORw0KG…..这样的代码,从而实现所有的内容都在一个文件中的目的。

data: URI被大多数浏览器支持,并且语法由RFC2397定义,不同浏览器的处理效果基本一致,当然,和往常一样,不被ie系列支持。不过从我个人来讲,不管是windows平台还是linux平台,我都会选择firefox浏览器,所以可以无视掉ie。

当然data: URI也不是万能药水,它也有自己的优缺点:(本部分参考自wikipedia优点:

  • 增加了web访问的请求次数,比如一个包含2个图片引用的网页文件,一共会产生3次web请求——一次是文件本身,另外两次分别是那两个图片。这样会节省一些网络资源,因为http协议是无状态协议,每次请求都一定的系统开销。
  • 一般的浏览器默认配置都是最多同时使用2个连接访问服务器,所以请求次数的减少也节省了连接资源。有些web服务器从服务端也可以作类似的配置。
  • 浏览器缓存中的文件数目减少了。
  • 在一些访问受限制的场合可以使用,比如一个web界面的超文本编辑器,就可以通过这种方式在编辑区中插入图片。(不明白它在说什么)
  • 我想这同样适用于需要隐藏图片地址的场合,因为图片的地址就是它的数据,而不是到你服务器上某个文件的链接,所以这一点对付图片盗链者来说简直太有效了。
  • 可以避免页面采用https连接,图片等文件采用普通http连接所产生的“本页即包括安全内容,又包含不安全的内容”这样的情况。
  • 最重要的一点,通过它可以实现把网页保存为一个单独的文件 :)

缺点:

  • 嵌入的内容在客户端要重新进行编码和显示,增加了一点点客户端系统开销。
  • 如果同一项资源被多次引用,也只能重复嵌入它的数据,没有“重复利用”这一说,如果网页中同一个图片被显示了100次的话,数据量的增加是惊人的。
  • 浏览器对URI长度通常都有限制,比如opera限制为4k,不过这只影响你把date: URI写到地址栏或者<a>标记中的情况。
  • 不支持数据压缩,采用base64编码的数据体积会增加1/3,采用url-encode编码的数据体积会增加2倍。不过如果web服务器启用了压缩,这一点的影响就可以抵消了。
  • 不被微软的IE支持。

data: URI的基本使用格式如下:

data:[<MIME-type>][;base64|charset=some_charset],<data>

mime-type是嵌入数据的mime类型,比如png图片就是image/png。 如果后面跟base64,说明后面的data是采用base64方式进行编码的,毕竟数据都需要编码以免和其他的网页内容相冲突。所以如果不采用base64编码,就必须使用urlencode把数据进行转换,在这种情况下可以使用charset=来指定内容的字符集。

下面贴几个data: URI实际应用的例子,先看效果,再贴源码,注意我贴的源码中英文引号会被WP替换为中文引号,另外为了显示方便会增加一些回车换行,如果要复制到本地实验的话最好直接查看本页面的源代码。

首先是一个图片的例子,我的图片也许大了些,不过用来作qq自定义表情发给朋友还是不错滴。 这个图片用来作qq表情传给别人不错哦 注意这可是很“长”的一行哦,源代码:

<img src=”data:image/gif;base64, R0lGODlhIwGVAPecAHmCwQAA/yBKv+P1//z+/7zo/6De/9Hv/1FOhMbj+I2x7SBd1IGAlur4//7/ /0hGh9Tw/+by/HiX3Vh4y3iW28nt/5/e/zVjzUJruzVmzyA9ryA5qzhSteb2//X8//f8/93z/6jh ……(省略若干行) RT3asYpVxKLsEujHwTGxjqh8pTRp1zruHGEQX5CCEZhwgzj2cpSDzCErxThAQq5tfMEk5Sq/B8xX LlF/8FSm/6b5xynaUD3zTFwpa/cixHbu05BWfCcwT+lCfZJPn148nyfniEzRCbSVoKwWMRUWEAA7 ” alt=”这个图片用来作qq表情传给别人不错哦” />

下面是一个在inline css中嵌入背景图的例子: data: URI 源代码:

<span style=”padding-right: 20px; background: url(data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD///+l2Z/dAAAAM0lE QVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4Ug9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQ AAAAAElFTkSuQmCC) top right no-repeat;”> data: URI</span>

再来一个嵌入javascript代码的例子,注意不同于上面两个例子,这次使用的是urlencode编码方式: 点一下这里–>Fwolf作品 源代码:

<script type=”text/javascript” src=”data:text/javascript;charset=utf-8,function%20test_urlencode_js%28%29%7Balert%28%27%E8%BF%99%E7%AE%97%E6%98%AF%E4%B8%80%E7%A7%8D%E5%8A%A0%E5%AF%86%E4%B9%88%EF%BC%9F%27%29%3B%7D”></script> <span onclick=”javascript:test_urlencode_js();”>点一下这里–&gt;Fwolf作品</span>

参考: MHTML on wikipedia Maf extension project for mozilla & firefox Mozilla Archive Format on Firefox Addons RFC2557: MIME Encapsulation of Aggregate Documents, such as HTML (MHTML) Bugzilla: Full rfc2557 MHTML multipart/related support in BROWSER(from 1999) Using HTML in E-mail kmhtConvert data: URI scheme RFC2397: The “data” URL scheme Using Data URLs Effectively with Cascading Style Sheets HTML as media container format

后记 @ 2008-01-12

opera也支持mht格式了,包括它的linux版本,不知道从什么时候开始的。

其实这篇文章在2007年6月就写好了,当时就想着写一个小工具,利用data:URI这个特性,能够把网页都保存到一个文件当中去,然后再发表文章,可这一等就是半年多,终于利用2008年春节的空档时间,把这个工具已经写好了,有兴趣的可以试一试,还不知道我的服务器能否支撑得住呢 :-)

Related posts

Categories: Internet, Tools Tags: , , ,

用模拟器玩游戏机游戏也不错

June 23rd, 2007 Fwolf 1 comment

虽然游戏差不多都会玩,可对各类游戏机的区别、模拟器的使用还不是十分了解,只介绍一下个人的简单体验,供比我更没经验的菜鸟参考,达人就可以略过了。

测试环境:ubuntu 7.04, x86

Mame

好东西啊,直接安装xmame就可以了(我选的sdl),然后下载rom,一般是zip文件,放到指定目录中就可以玩了。rom存放路径可以修改,是/etc/xmame/xmamerc中的rompath那一行。

似乎mame支持的游戏,名称和文件名是相对固定的,shell中开启游戏只要xmame game_name就行了,不用指定调用哪个rom文件(好像也可以指定,但我不知道怎么用),如果不知道某个zip文件中装的是哪个文件,xmame -id file.zip可以帮你分辨出来。

mame的其他功能也十分丰富,包括控制键的调整,截图等等,使用zip格式存储rom,调用的时候自动解压,也节约了磁盘空间。

默认5是投币,1是开始P1,不过默认操作键不太适应,P1的方向键是以f为下的4个,按钮好像是以j为中心的4个,好在修改方便,我习惯用edsf作方向,jkl作按键。

Shift+PageUp/PageDown可以调整窗口大小,Alt+PageDown可以切换窗口和全屏模式。

Nds

使用的模拟器是ubuntu中自带的desmume,不过体验非常糟糕。我找的是一个“大战略DS汉化版”游戏,打开以后,不仅画面不知道怎么放大,游戏本身的操作也是云里雾里,鼓捣半天终于开始游戏了,又是不知道该如何操作了。。。

对nds游戏真是太不熟悉啦,不过试了好几款都这样,怀疑播放器有问题,查了一下网站上的兼容性列表,似乎确实有很多游戏没有完全兼容,好像这个网站也有日子没有更新了?

Gb/Gbc

安装了源中的gnuboy-sdl,楞是不知道该用什么命令启动。。。不过似乎gb游戏都比较古老和原始了,我感兴趣的没几个。

FC

安装fceu即可,rom扩展名为nes,打开倒是挺方便的,fceu file.nes就行了,声音也出来了。看了一下man中说Enter是开始,一按下去出个菜单,然后wzas是方向键,小键盘3是选择(和man中不太一样嘛),然后。。。日文的(我弄了个大战略),就不会玩了。

SFC

安装zsnes,rom扩展名为smc,可以压缩为zip直接使用,也是直接zsnes file.zip就能打开了,默认的按键也是一片迷糊,不过可以按esc呼叫出zsnes的菜单,对按键进行配置,总体感觉不错,挺流畅,挺好用的。

SAGA MD

安装dgen,rom扩展名smd,也可以压缩为zip直接使用,打开倒是挺顺畅,还可以指定窗口大小,图像效果看起来不错,仍然是不知道按哪个键起作用。。。

NEO/CPS1/CPS2

90年代的街机上NEOGEO没少见吧,这些也可以用mame来玩,不过要额外下载bios文件,比如neogeo.zip,很多大型的街机游戏都是这种格式,估计FANS不少。也可以用GnGep来玩,需要自行编译,我没有试。

自己的电脑配置有限,带宽也有限,没有再去尝试高级的主机比如PS什么的模拟器,都是挑一些老掉牙的游戏来试的。不过,从某种意义来说,这些游戏还真是“跨平台”呢,至于模拟器软件,截至目前个人感觉还是mame和zsnes要高出一筹来,这样正好,估计大家玩的最多的也就是超级任天堂和街机了吧?

参考

Update @ 2007-10-13

最好装xmame-x而非sdl,因为xmame-x支持opengl加速。如果没有声音,可能是alsa的问题,可以参考一下Feisty下的alsa怎么不响了?

Related posts

Categories: Game, Linux Tags:

虚拟主机合租事宜-初步方案

June 17th, 2007 Fwolf 18 comments

现在国外虚拟主机十分流行,用来架设个人blog再合适不过了,和国内的虚拟主机相比优势很多,所以也想来组织一批合租,在合理的负担下大家分担费用,共同受益。

现在先把初步计划列在这里,看看有多少人报名,再决定下一步方案。

主机供应商的选择

其实选择主机供应商是个非常难的事情,我最初知道的是DreamHost,不过google之后发现它更适合学习和把玩,而不是提供长期稳定的blog服务,只作为最后的备选方案;

然后看上了BlueHost,以稳定著称,不过合租用户只能有ftp权限;运气不好的话,还会碰上无法访问的主机;再说,它自己的主站现在都无法访问了。

具有独立ip的便宜主机,就是Site5了,虽然它自己网站上的报价方案有一点点乱,不过最便宜的$5/month方案听起来还是不错的;但是稳定性如何未知,主机限制也比较严格。

最后就是王牌主机MediaTemple了,选择最便宜的gs方案,$20/month,对于架设blog来说足够了。

最终的优先顺序定为上面四个倒序排列,先从MediaTemple开始考虑。如果报名的人寥寥,就选择Site5BlueHost,如果人比较多,而且能够承担的费用也高一些,甚至可以考虑MediaTemple的dv方案,就像v2ex组织的那样

以上主机是我google了30多小时之后选择的,如果大家有更好的方案建议,欢迎提供。后续内容暂时按MediaTemplegs方案计算。

合租人选择条件

  • 拥有自己的独立域名,或者你委屈一下用我的二级域名也可以。
  • 只放置blog,允许附加一些不耗费资源的小程序或静态页面。
  • 网站的内容必须符合中国的法律规定,不欢迎政治等敏感内容,再说在blog里说也解决不了实际问题。
  • 网站中不得有明显违反版权的内容,比如电子书、mp3等等。
  • 不欢迎纯转贴网站,欢迎原创blogger。
  • 不欢迎只是短期实践、玩玩而已的网站,欢迎长期使用,作为“生活必需品”的网站。
  • 最好对远程主机使用和blog使用有些了解。

服务器环境及主机资源分配

Linux操作系统,PHP 5(不提供PHP 4),Perl 5.8.4,Python v2.3.5(这两个应该没多少人用吧),Apache 2.0.54,MySQL 4.1.11(注意字符集的问题)。

服务器资源(参见官网说明): * 100 GBs of premium storage * 1 TB of short-path bandwidth * 100 unique sites / alternate domains * 64MB Ruby/Mongrel container * 1,000 GPUs * 100 databases * 1,000 email addresses

由于blog不怎么耗费资源,暂时按20个人共享计算,每人:

  • 5G磁盘空间。
  • 50G月流量。
  • 5个域名或子域名,但网站只能有一个。
  • 1个mysql数据库,空间限制200M,可参见官方mysql说明,反正每人只有一个网站,一个数据库足够用了。
  • Ruby GPU email什么的不再分了,估计大家用不到。
  • ftp人手一个,ssh shell如果gs方案能提供的话,也人手一个。

额外说明一下,gs方案只有一个数据库用户,所以我想在给大家创建数据库的时候,名称用随机字符,这样大家互相不知道数据库名称,共用一个数据库用户应该不会有什么安全性问题。

费用分摊及支付说明

按年付费,一年的费用为$200,合每人$10,人民币记为80元。只接受一次用一年的网站,因为我是打算长期用下去的,当然实在中途你要退出也可以:(,按实际使用时间退款。

需要说明的是,这个费用要求每个网站的日PV大概不超过500,我估计gs方案主机的日承载PV能力为5k到10k之间(参考一参考二),对于多数自用blog应该是够用了,再说,访问量如果太大,不但会拖慢整个服务器,还会因GPU超量而产生额外的费用,一分价一分货嘛。

如果你的网站访问量稍微大一些,但仍然想参加的话,也可以报名占用2个人或更多人的名额,当然费用也随之增加。

支付方式待定,先定下方案再说。

报名须知

有意向的同学请给我发email,并至少注明以下几项内容:

  • 您的域名,我会造访看内容是否适合。
  • 您网站的平均日pv。
  • 您的用户名,用在各类用户分配上。
  • 您打算使用的时间,以年为单位。
  • 您所能承受的费用(按年计),如果承受能力都比较高的话,我可以考虑选择更高档次的主机方案,或者更改合租人数。

补充说明

  • 请记下本文的地址,我会不定期对方案进行完善。
  • 由于我也在20个合租者当中,并且我要占3个名额,所以实际可用的合租人数为17人。
  • 虽然我以前没有组织过合租,也没有使用过MediaTemple的空间,但我的水平,请大家放心;如果因我对情况或MediaTemple的不了解导致在方案中有不实或无法实现的陈述,也请大家理解。
  • 费用没有按实际汇率计算,不过已经这么低了,差个几块应该没人会在意吧,况且我还要承担有人会中途退出的风险。
  • 拟接受直接支付给我美元,到paypal或者信用卡帐户。
  • 再次重申我本人是想长期使用的,即使以后由于某些不可抗力搬家,也一定考虑带着大家一起搬的。
  • 欢迎对此方案提出修改意见。

参考

另外附上一些我查到的资料,供大家参考:

Update @ 2007-07-02

方案已经有所调整,请访问虚拟主机合租事宜-MT(dv)方案

Related posts

Categories: General, Hosted Tags:

从万网转出域名成功

June 14th, 2007 Fwolf 30 comments

网上一直流传着“万网域名转出基本是无望地”的说法,恰好,我续费5年的域名今年就要到期了,恰好又是2000年在万网注册的,出于对这条传闻的浑身不舒服,以及godaddy合适的价格与服务,我决定要把域名转出来,不管有多难。下面是我的大体经历,不见得适合所有人,当然更不是哪方的枪文,只是希望有和我同样困惑的朋友能从中受益。

我的域名大概9月到期,由于域名到期前一个月不允许转移,所以很早就开始准备了,按照万网国际域名转出的要求,在4月底就把《万网国际域名转移注册机构申请表》和身份证复印件邮寄过去了,五一过后,收到了万网的拒绝email:

尊敬的客户您好:
   已经收到您的域名fwolf.com转出材料,但是您的域名所有人是Personal,我们无法确
认,请您提供您的护照,如果护照中的英文与您的域名所有人英文名称一致我们可以确认
,传真号码:010-84134247,请您在传真中注明您的域名和转出字样,以上给您带来的不
便,请您谅解。

若还有其他问题请及时与我们联系,谢谢!

在这里我不得不介绍一下这个Personal是怎么来的,不知道2000年左右在万网注册过域名的人谁还记得,当时注册的时候,有选项问是个人注册还是公司注册,我选的是个人注册,这个Personal就冒出来了。

不管怎样,我对需要我出示护照的要求感到十分不合理,就回了封email,但此后再没收到过任何解释,不得不说不回复email是万网一个非常不好的习惯。

后来,我又想寻求一些非官方的渠道,从网上搜到了一个万网员工的邮箱,给他发邮件请求帮忙,他也答应了,大概一周多以后也果然收到了万网一位客户经理的邮件,询问我域名转出过程中的问题。我满怀希望的回信了,没有回音。。。10天后再回信咨询,依然没有回音,唉,哪怕是拒绝的回信,也能让我感觉舒服一点啊。

再后来坐不住了,开始尝试一些“非正常”的渠道,直接在godaddy进行域名转入操作,刚开始域名的联系人居然是万网的邮箱。。。天,原来当时注册万网时,除了域名所有人是我的资料之外,其他的管理联系人、技术联系人都是万网的联系方式。。。变更。。。居然无法提交,原因是,“公司”不能为空。不知道有没有其他人遇到过此类问题,这不是linux或者firefox的问题,我换过平台操作还是一样。我又不能通过过户来修改那个不能为空的“公司”,不仅是费用的问题,还牵涉到域名可转移期限、过户手续繁琐的问题。不过幸好发现万网网站的一个小漏洞,轻松绕过此问题,修改了所有域名中的联系方式,统统改为我自己的。

再次在godaddy提交域名转入申请,成功收到了Transaction IDSecurity Code,继续操作,提示需要Authorization Code,天,我上哪儿去找这个Authorization Code,帮助上说是原注册商提供的,可我翻遍了万网控制面板也找不到。

一顿摸瞎中,我发现万网有一个域名DIY自助管理,是用域名和密码登录的,无独有偶,域名管理中有一项 “域名密码修改”,会不会是这个密码呢?尝试设置了一个,域名DIY自助管理倒是能进去了,可作为Authorization Code用的时候,程序操作是通过了,但很快被万网枪毙了:

The transfer request for the following domain name(s) has been denied by the losing registrar:

看来行不通。无奈,眼看着域名到期日的临近,实在坐不住了,开始打电话向万网咨询。

刚开始还是老一套,Personal的问题,经过几次电话联系,反复的解释Personal的来历,这次万网不要护照了,但要求我提供户口所在地证明,证明我就是那个Personal,可笑,哪个派出所能开出这样的证明呢?除非万网给我一份要求提供如此证明的函。。。其实万网工作人员也并非不讲理,大概也是想为客户负责吧,不愿让域名被不知名的人给转走了。细心耐心的交涉终于有成果了,万网的工作人员被我说服,要求我用域名注册人的邮箱向某个万网官方邮件发封邮件,里面注明域名转出事宜,并附上身份证扫描件,就可以给我办理转出了。

接下来就顺利多了,邮件发出二十分钟后就收到了Authorization Code,让我大跌眼镜的是,居然和我设置的域名DIY自助管理密码相同!不同的是输入godaddy之后没有被枪毙,开始了长达6天的等待,然后,今天,收到了域名转移成功的邮件。

总结下来,除了电话里纠缠的那个Personal问题之外,只是邮寄一点资料,等待的时间稍微长一些,但是没有收取任何费用,虽然不像买冰棍儿那么简单,倒还说得过去,至少我的体验不像网上传言的那样“基本是无望地”,或许是万网改进了客户服务质量吧,我希望是这样。不过话这么说,也得益于网上看到的这篇文章,有话好好说,先礼再后兵,和平解决问题为最优。

再提醒一下各位观众,域名注册商选择一定要慎重,要看服务质量,而不是价格,至于到底是在国内注还是在国外注,视具体情况而定吧,万一碰到一个外国流氓可能更麻烦一些呢,一定要选择口碑最最最好的。

Update @ 2007-06-17

cnBeta把我这篇文章转贴了,没想到留言的朋友中有不少对我的文章有误解,或者说我没有写清楚,在这里再补充一些吧,不过我最烦没完没了的口水战。

  • “万网域名转出基本是无望地”的说法,网上确实流传着一个版本,参考, , , ,至于准确性和真实性大家就见仁见智吧。
  • 也许我没有提供足够的资料,也许我的信息填写的不正确,也许我根本就没掌握操作要领,anyway,上面已经写的我也不重复,没写的我基本上也都忘记了。
  • 万网的那个漏洞不是什么大问题,不影响数据安全,这个问题只有和我经历类似的、实际遇到过的才能体会到。
  • 和万网服务人员email以及电话沟通的过程中,他们始终很客气。
  • 我仍然有域名留在万网,并且不会转出。
  • 谣言止于智者,事实胜于雄辩。
  • 我会删除使用不文明用语的留言。

Update @ 2008-10-08 参考一些别人的转出域名经验吧

Related posts

Categories: Internet Tags: , ,

数据库使用优化的一点心得

June 11th, 2007 Fwolf No comments

在生产系统中,数据库经常会成为瓶颈,给管理员带来无穷麻烦,所以dba才那么值钱啊。但对一些中小型的应用来说,也许没有好的dba来从数据库本身机制管理上来进行优化,或者现有系统特性不允许太大的改动,加上数据库不像web服务器那样可以简单的通过集群来扩容,这样就需要从应用程序的角度来进行优化了,尤其是应用程序使用数据库的方式:

  • 减少复杂的sql,多用简单的sql。
  • 在sql中减少运算的使用,除了count(1)。
  • 索引和条件中,多用int类型,少用string类型。
  • 尽量不要用触发器,无必要不要用存储过程,慎用事务。
  • 注意where条件的顺序。

从系统设计思路上来说:

  • 将大型的操作拆分为小型的操作,用比sql更灵活的web语言来实现部分内容。
  • 程序对数据库连续取数据进行操作的时候,可以考虑对已经取过的数据适当的进行缓存,减少重复执行sql的过程。
  • 常用但不常更新的页面,可以考虑静态化,减轻数据库压力。
  • 控制图片的数量和体积,善用css,启动服务器端压缩以节约带宽。

从数据库自身设计来说:

  • 配合常用查询,对索引进行优化改进。
  • 在数据库设计中适当保留冗余,针对访问速度进行优化。

最后一点教训:最好在设计初期就开始考虑性能的问题,贯穿整个开发进程,否则投入使用以后再进行修改,就要花费数倍的精力了;而设计时最不易发现问题的原因就是数据量小、访问量小,数据可以进行造假,访问量可以用ab等压力测试工具来模拟,但这些都和真实环境有相当大的偏差,不要太相信就是了。

以上只是一点拙见,抛砖引玉,欢迎拍砖。

参考

Related posts

Categories: Database Tags: