存档

‘工作文档’ 分类的存档

PHP 性能优化技巧

2009年6月26日

Google 在 Google Code 制作了 “Let’s make the web faster” (让我们使得 Web 更快)的网站中,分享了一些如网页性能优化的技巧和教程以及工具,今天我就翻译一篇技巧文章:PHP 性能优化技巧,他说的5条技巧我都不知道。

1. 不要随便就复制变量

有时候为了使 PHP 代码更加整洁,一些 PHP 新手(包括我)会把预定义好的变量复制到一个名字更简短的变量中,其实这样做的结果是增加了一倍的内存消耗,只会使程序更加慢。试想一下,在下面的例子中,如果用户恶意插入 512KB 字节的文字到文本输入框中,这样就会导致 1MB 的内存被消耗!

BAD:

$description = $_POST['description'];
echo $description;GOOD:

echo $_POST['description'];2. 对字符串使用单引号

PHP 引擎允许使用单引号和双引号来封装字符串变量,但是这个是有很大的差别的!使用双引号的字符串告诉 PHP 引擎首先去读取字符串内容,查找其中的变量,并改为变量对应的值。一般来说字符串是没有变量的,所以使用双引号会导致性能不佳。最好是使用字符串连接而不是双引号字符串。

BAD:

$output = “This is a plain string”;GOOD:

$output = ‘This is a plain string’;BAD:

$type = “mixed”;
$output = “This is a $type string”;GOOD:

$type = ‘mixed’;
$output = ‘This is a ‘ . $type .’ string’;3. 使用 echo 函数来输出字符串

使用 echo() 函数来打印结果出了有更容易阅读之外,在下个例子中,你还可以看到有更好的性能。

BAD:

print($myVariable);GOOD:

echo $myVariable;4. 不要在 echo 中使用连接符

很多 PHP 程序员(有包括我)不知道在用 恶臭 输出多个变量的时候,其实可以使用逗号来分开的,而不必用字符串先把他们先连起来,如下面的第一个例子中,由于使用了连接符就会有性能问题,因为这样就会需要 PHP 引擎首先把所有的变量连接起来,然后在输出,而在第二个例子中,PHP 引擎就会按照循序输出他们。

BAD:

echo ‘Hello, my name is’ . $firstName . $lastName . ‘ and I live in ‘ . $city;GOOD:

echo ‘Hello, my name is’ , $firstName , $lastName , ‘ and I live in ‘ , $city;5. 使用 switch/case 代替 if/else

对于只有单个变量的判断,使用 switch/case 语句而不是 if/else 语句,会有更好的性能,并且代码更加容易阅读和维护。

BAD:

if($_POST['action'] == ‘add’) {
addUser();
} elseif ($_POST['action'] == ‘delete’) {
deleteUser();
} elseif ($_POST['action'] == ‘edit’) {
editUser();
} else {
defaultAction();
}
GOOD:

switch($_POST['action']) {
case ‘add’:
addUser();
break;
case ‘delete’:
deleteUser();
break;
case ‘edit’:
editUser();
break;
default:
defaultAction();
break;
}

西城百幕 工作文档

互联网产品性格设计的十个建议

2009年3月3日

好的产品性格必定能与用户很好地相处。设计互联网产品的性格有以下十个建议:

1、礼貌

礼多人不怪,网站应该像个绅士。这点体现在网站上的对话中,你始终不能跟用户生气。

2、乐于助人

多数网站或程序并不会试图提供相关信息。相反,它只是很呆板地回答我们问它的问题。比如程序告诉我们打印一份文档的时候,不会告诉我们打印纸不够了。而乐于助人的朋友是会告诉我们这些的。

3、具有常识

在不合适的地方提供不合适的功能是最没有常识的做法。把常用的功能放在显眼的地方,方便用户操作。

4、体贴

一个体贴的朋友会记住你的喜好以便将来使你开心。程序也应努力记住用户的习惯,特别是用户告诉过程序的事。比如在编写email时,能提供自动保存。

5、自信

程序总是用错误的信息向用户报怨,用确认的对话框打断用户,用毫无必要的通知来向用户炫耀。

程序应该是自信的!当你点击打印按钮,然后去喝杯咖啡,回来的时候却发现一个可恶的对话框:“你真的要打印吗?”。。。天!这种不安且没自信的感觉会让人生气。

6、积极

虽然我们不希望程序因为它的小担心或小成功而不断地纠缠我们,但我们却真的希望它能对关系到我们的事及时通知。用户操作过程中可以提供实时的非模态反馈。

7、能预见需求

程序可以利用空闲时间为用户办事。比如网络相册的图片“预处理”或“预加载”。

8、不纠缠

程序不会问用户许多问题。人们不愿意也不希望陌生人像查户口一样地盘问自己。

9、失败也不失风度

举个例子,你在填完你认为需要填写的表单信息后可能按下提交按钮,但由于有未输入完整或输入错误,程序拒绝提交,于是用户返回却看到之前即使正确的也被删除了。

当你的一个朋友严重失礼的时候,他会试图弥补,挽回可以挽回的损失。同样,当程序发现一个致命问题的时候,应该选择充分的时间弥补过失而不是让用户受到损害。

10、适时调整

在现实世界,限制总是可以调整的。程序也需要意识并包容这种事实。

时间

对计算机用户来说,滚动是非常熟悉的常用用法。滚动也解决了跨越月的边界进行时间安排的机械表达问题。(不要一成不变地将旧的限制带入新的平台)

文章来源:http://blog.dearcolor.com/20090228/internet-products-design-ten-recommendations.html

西城百幕 前端技术, 工作文档