`

magento性能优化

php 
阅读更多

magento性能优化


14个快速加载web页面的技巧:

减少HTTP请求数
使用CDN
增加过期头信息
gzip压缩传输内容
将css样式表放在页首
将js文件放在页尾
不使用css表达式
尽量少用内联式的css和js,将其放置在外部资源文件中
减少DNS检索次数
压缩js文件
避免页面重定向
移除重复脚本
配置实体标签
缓存ajax请求


简单的linux优化提示:

系统采用最小化安装,仅安装必需的软件包,不装GUI/X-Window等
停止或禁用无需使用的服务,比如cups
调优内核参数: (例如)
# echo '8192' > /proc/sys/fs/file-max
# echo '32768' > /proc/sys/fs/inode-max
# echo 268435456 > /proc/sys/kernel/shmall (SHMALL可用共享内存的总数量 单位:字节or页面[如果是字节,就和 SHMMAX 一样;如果是页面,ceil(SHMMAX/PAGE_SIZE)] )
# echo 268435456 > /proc/sys/kernel/shmmax
#ulimit -n 4096


编译 apache HTTP服务器

编译必须模块时使用静态编译的方式来取代DSO(动态共享对象)方式,并且禁用无需使用的模块:
./configure --prefix=/usr/local/apache2 --disable-status --disable-userdir --disable-threads
--disable-ipv6 --enable-modules='ssl so rewrite deflate headers expires'


启用 mod_deflate 模块

说明: DEFLATE 输出过滤器,允许服务器在将输出内容发送到客户端以前进行压缩,以节约带宽

打开 magento 根目录下的 .htaccess文件,定位到<IfModule mod_deflate.c></IfModule>块之间,
将 其中的注释行开启,例如:

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
    Header append Vary User-Agent env=!dont-vary
</IfModule>


启用 Header Expires 模块

打开 magento 根目录下的 .htaccess文件,定位到<IfModule mod_expires.c></IfModule>块之间,例如

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 1 month"
    ExpiresByType image/x-icon "access plus 1 month"
    ExpiresByType text/html "access plus 1 month"
    ExpiresByType text/plain "access plus 1 month"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/x-javascript "access plus 1 month"
    ExpiresByType application/x-shockwave-flash "access plus 1 month"
</IfModule>


禁用 Etag,启用 KeepAlive

打开 magento 根目录下的 .htaccess文件,移除FileETage None行的注释,如果在httpd.conf没有启用KeepAlive,可在此处新增几行,例如

FileETage None
KeepAlive On
MaxKeepAliveRequests 200
KeepAliveTimeout 5


Mysql 快速优化

在 my.conf 中变更以下参数:

skip-name-resolve
innodb_buffer_pool_size=768M
innodb_flush_log_at_trx_commit=2

时常使用Tuning Primer程序监测mysql运行状态并调整相应的配置参数


PHP编译

类似apache编译方式,采取静态编译的方式来编译扩展,并禁用无需的模块:

./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs
--with-config-file-path=/etc/php --with-png-dir --with-jpeg-dir --with-gd
--with-curl --with-zlib --enable-mbstring --with-mcrypt --with-freetype-dir=/usr
--with-mysql=/usr/bin/mysql --with-mysqli --enable-pdo --with-pdo-mysql=/usr/bin/mysql
--without-pdo-sqlite --with-openssl


为PHP安装 eAccelerator 插件

从 eAccelerator.net 下载最新的稳定版本,编译时启用共享内存:

./configure --with-eaccelerator-shared-memory --enable-eaccelerator=shared
--with-php-config=/usr/local/php/bin/php-config


完成上述操作之后,我们已经完成了步骤A:

添加 过期头信息
gzip压缩组件配置
配置实体标签

此时我们拥有了:

一个能最大程度促进站点性能的轻量级的LAMP环境
一个足够快的运行Magento的环境

现在 让我们正式进入到Magento调优阶段


先看看Magento系统内置的优秀的性能优化模块:

多种适配器缓存
编译
合并css和js文件
并行下载


启用 Magento 缓存

管理面板->System->Cache Management

All Cache -> Enable
Layered Navigation(层次化导航) -> Yes

管理面板->System->Configuration->Catalog->Frontend

Use Flat Catalog Category -> Yes
Use Flat Catalog Product -> Yes

启用eAccelerator适配器

打开 {Magento_root}/app/etc/local.xml,在里面增加如下3行
...
    </resources>
    <session_save><![CDATA[files]]></session_save>
    <cache>
        <backend>eaccelerator</backend>
    </cache>


启用编译

管理面板->System->Tools->Compilation(编译)->Run compilation Process


合并 CSS & JS 文件

管理面板->System->Configuration->Developer

js 设置->合并js文件->YES
css 设置->合并css文件->YES


并行下载设置
通过虚拟主机将magento下的资源目录划分成几个子域名,例如:

js.iamsese.cn -> {Magento_root}/js
media.iamsese.cn -> {Magento_root}/media
skin.iamsese.cn -> {Magento_root}/skin

然后去管理面板->System->Configuration->Website->Unsecure(不安全的,非加密的),and configure the basic URLs accordingly(相应的)


现在你完成了:

减少HTTP请求数
将css样式表放在页首
将js文件放在页尾
尽量少用内联式的css和js,将其放置在外部资源文件中
减少DNS检索次数
压缩js文件

现在把它们拼凑在一起:

减少HTTP请求数
增加过期头信息
gzip压缩传输内容
将css样式表放在页首
将js文件放在页尾
不使用css表达式
尽量少用内联式的css和js,将其放置在外部资源文件中
减少DNS检索次数
压缩js文件
避免页面重定向
移除重复脚本
配置实体标签
缓存ajax请求


现在 你已经完成了 12/14,这就能足够为初学者使用了


工具&程序:

Firebug:    
YSlow:
Page Speed:
Tuning Primer:
WebPagetest:

1
3
分享到:
评论
3 楼 vb2005xu 2014-06-23  
如果编译 PHP时出现 mysql头文件找不到的问题,可以使用 mysqlnd 来指定

./configure --prefix=/home/kenxu/php5.4 --with-apxs2=/home/kenxu/apache2/bin/apxs --with-config-file-path=/home/kenxu/php/php-config --with-png-dir --with-jpeg-dir --with-gd  --with-curl --with-zlib --enable-mbstring --with-mcrypt --with-freetype-dir=/usr --with-mysql=mysqlnd --with-mysqli --enable-pdo   --with-pdo-mysql=mysqlnd --without-pdo-sqlite --with-openssl
2 楼 vb2005xu 2012-11-23  
编译mysql
使用rpm包,或者apt-get、yum等方式安装MySQL已经很方便了,不过我还是更喜欢编译安装。编译安装的好处:平台无关、安装的MySQL目录独立(方便清楚),据说有更好的性能和平台耦合。缺点,编译安装较慢(不过现在8核CPU编译起来也很快了)。

1. MySQL编译参数

常用的参数有:

CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors \ -fno-exceptions -fno-rtti" ./configure \ --prefix=/data/mysql --with-extra-charsets=latin1,gbk,utf8 \ --with-plugins=partition,heap,innobase,myisam,myisammrg,csv \ --enable-assembler make make install

“If you are using a version of gcc recent enough to understand the -fno-exceptions option, it is very important that you use this option. Otherwise, you may compile a binary that crashes randomly. Also use -felide-constructors and -fno-rtti along with -fno-exceptions.”

参考:MySQL Installation Using a Source Distribution

2. 多核编译

可以通过 -j 参数指定编译使用的CPU数量,之前一直没有注意使用这个选项,以下是对比测试:

$date && make > make.log 2>&1 && date Fri Apr 16 16:32:00 CST 2010 Fri Apr 16 16:39:37 CST 2010 $date && make -j 8 > make.log 2>&1 && date Fri Apr 16 16:27:10 CST 2010 Fri Apr 16 16:28:30 CST 2010 $date && make -j 15 > make.log 2>&1 && date Fri Apr 16 16:50:23 CST 2010 Fri Apr 16 16:51:41 CST 2010

看到,单核编译花了457秒,八核编译花了80秒,十五核编译花了78秒。

3. 目录结构

最初安装MySQL,不用RPM包的另一个重要原因就是,编译安装我们可以获得相对独立的MySQL目录,包括Server、Client、Data File等都可以比较好的规划在一个目录中。

在编译时,使用--prefix=/data/mysql则可以保证,Server(mysqld_safe)、Client(mysql)等统一在prefix所制定的目录下;在/etc/my.cnf文件中,我们再继续指定Data File目录、sock文件目录、pid文件目录、日志目录、tmp目录,这样基本上就保证了整个MySQL的独立性。

你甚至可以把/etc下的my.cnf文件都转移到prefix指定的目录下,这样你就拥有一个完整而且独立的MySQL目录了。

4. 需要注意的问题

一般编译安装之后,很多生成的脚本中都会写死目录(prefix指定的目录),这样编译好的脚本(二进制、shell、perl)如果转移到别的目录可能会导致无法运行。

例如,编译时指定prefix=/data/mysql,如果最后你把编译好的文件转移到/opt/mysql,很多脚本可能会无法运行,甚至会发生很多怪异的现象:-(

5. 安装实践 step by step

下面是将MySQL安装在/home/mysql目录下的一个实际操作过程,这里的prefix将指定目录/home/mysql/mysql(你可以根据需要修改为自己需要指定的位置)

# # # 新建运行MySQL的用户 groupadd dba useradd -g dba mysql cp mysql-5.0.86.tar.gz /home/mysql/ chown -R mysql:dba /home/mysql/mysql-5.0.86.tar.gz # # # 开始编译、安装 su - mysql tar zxvf /home/mysql/mysql-5.0.86.tar.gz cd mysql-5.0.86 ./configure \ --prefix=/home/mysql/mysql --with-extra-charsets=latin1,gbk,utf8 \ --with-plugins=partition,heap,innobase,myisam,myisammrg,csv make -j 8 && make install #-j 表示希望使用cpu核数 # # # 建立配置文件 cd /home/mysql/mysql su - root cp mysql/share/mysql/my-medium.cnf /etc/my.cnf chown -R mysql:dba /etc/my.cnf # # # 修改配置文件 配置数据文件、日志的路径 su - mysql vi /etc/my.cnf basedir = /home/mysql/mysql datadir = /home/mysql/mysql/data socket = /home/mysql/mysql/run/mysql.sock log-error = /home/mysql/mysql/log/alert.log log_slow_queries = /home/mysql/mysql/log/slow.log mkdir log run data tmp # # # 初始MySQL配置表(用户表 权限表等) ./bin/mysql_install_db --basedir=/home/mysql/mysql --datadir=/home/mysql/mysql/data --user=mysql --force # # # 启动MySQL ./bin/mysqld_safe &


linux下用源代码编译mysql(基本步骤)http://hi.baidu.com/travel981cn/item/fee251dcbe6d97e5795daa50

这篇文章是 linux下用源代码编译apache+mysql+php应用环境 的一部分,文章的其它部分请参考:

linux下用源代码编译apache+mysql+php应用环境

linux下用源代码编译mysql(完整步骤)

linux下用源代码编译apache

linux下用源代码编译php

mysql部分。mysql源代码的版本是:mysql-5.1.29-rc.tar.gz

关于mysql的编译方法,在http://dev.mysql.com/这个网址可以找到一些帮助,该文档介绍已足够详细。下面我给出编译mysql所必须的命令,让心急的朋友了解一下大概。

mysql编译安装基本命令——给心急的朋友,出于安全的考虑,推荐用特定用户去运行mysql:

groupadd mysql

添加mysql组

useradd -g mysql mysql

添加mysql用户,并加入到mysql组

tar xvf mysql-5.1.29-rc.tar.gz

解压源代码

cd mysql-5.1.29-rc/

进入源代码目录

./configure --prefix=/usr/local/mysql

配置mysql

make &&make install

编译并安装

scripts/mysql_install_db --user=mysql

安装mysql数据库并将所有权交给mysql

cp support-files/my-medium.cnf /etc/my.cnf

拷贝合适的配置文件

cp support-files/mysql.server /etc/init.d/mysqld

复制mysql启动脚本

chkconfig --add mysqld

添加mysqld服务

chkconfig --level 35 mysqld on

设置mysqld在运行级3和5中启动

chkconfig --list mysql

检查mysql的服务运行状态

service mysqld start

启动mysql

注意:只有新版的tar命令支持-x参数调用gnuzip,稍早一些的版本需要使用
tar xzvf mysql-5.1.29-rc.tar.gz或gunzip < mysql-5.1.29-rc.tar.gz | tar -xvf -
因此,如果你看到我使用一些“奇怪”的命令时,千万不要以为我打错了。

关于make install:新版本的make install可以同时完成make &&make install的任务,但是,如果在编译过程中出现了错误,在重新调整configure 参数后执行make install 时总有不太保险的感觉,一个聪明的做法是使用make clean 清除掉上次编译的结果。

关于/etc/my.cnf配置文件:/etc是mysql默认的配置文件位置,my.cnf文件可以在mysql源代码目录的support-files目录中选择一个合适的拷贝到/etc。当然,你也可以根据自己的需要进行配置。

关于MySQL首次启动错误:除了下文说到的权限问题外,在首次启动MySQL时还会遇到 federated 错误,这是因为在上文给出的编译选项中,没有启用 federated存储引擎 ,解决方法为,编辑mysql的配置文件my.cnf,找到 skip-federated 这一行,将该行注释掉。

如果你的mysql顺利编译并安装,但是却无法启动,那么多半是因为权限的问题。使用下面的命令:
假设mysql安装到/usr/lcoal/mysql,mysql的数据文件在/usr/local/mysql/var

cd /usr/local/mysql

进入mysql目录

chown -R root.root .

将/usr/local/mysql所有者/组改为root

chown -R mysql.mysql var

将/usr/local/mysql/var所有者/组改为mysql

以上列出编译mysql数据库的大概步骤,便于读者了解mysql从编译到运行的大概,但凡是需要以专有用户身份去运行的服务组件,大致都会用到上面的步骤。为了保持行文的流畅,在稍后的apache的章节中,我将不再叙述简略的编译方法。

下面我们正式开始,有兴趣要做完整个流程的朋友请耐心阅读,理解后再去操作。

linux下用源代码编译mysql(完整步骤)http://hi.baidu.com/travel981cn/blog/item/85b92b014f353b097bec2c06.html

1 楼 vb2005xu 2012-09-22  
http://www.csser.com/tools/backbone/backbone.js.html backbone 中文文档

相关推荐

    Magento电子书:Inchoo's Magento Posts

    - **Magento性能优化**:本电子书中提到了如何通过启用GZip压缩来显著提高Magento网站的速度。 - **自定义结构块/引用**:文章详细介绍了如何在Magento中添加自定义结构块,为用户提供更大的灵活性和定制性。 --- ...

    magento 加速插件 full page cache 花了我几十美金买的

    为了解决这个问题,"Full Page Cache"(FPC)插件应运而生,它是Magento性能优化的重要工具之一。 Full Page Cache 插件的核心功能是通过缓存整个页面来显著提高网站的加载速度。在传统的Web应用中,每次用户请求...

    magento加速,优化图片、加载速度免费插件

    因此,图片优化成为Magento性能提升的重要环节,包括减小图片大小、压缩图片、使用适当的图片格式等。 2. 免费插件介绍:Magento社区提供了一些优秀的免费插件,例如“magento优化图片加载速度插件免费下载(1.4-...

    linux-针对Mac上开发的Magento2优化的docker设置

    该项目旨在为希望在开发中使用docker的MAC用户提供良好的性能解决方案。 这是针对Mac上的Magento2优化的docker设置。 它具有与Linux或本地设置相同的性能。

    mage-perf-test:Magento 性能测试

    性能优化可以从以下几个方面入手: 1. **代码优化**:检查并优化 Magento 的核心代码、模块和主题,避免冗余和无效的操作,如不必要的数据库查询或内存泄漏。 2. **缓存管理**:Magento 提供了多种缓存机制,包括...

    Magento-中文开发教程.doc

    总结,Magento中文开发教程涵盖了Magento的基本操作、后台管理、界面定制、模块开发、API接口、性能优化和安全维护等多个方面。通过学习这个教程,无论是初学者还是经验丰富的开发者,都能更深入地理解和运用Magento...

    magento图片延时加载插件

    总结来说,“magento图片延时加载插件”是提升Magento电商网站性能的有效工具,它通过优化图片加载策略,提高了页面加载速度,改善了用户体验。正确的安装和配置是实现这些好处的关键,而持续的维护和更新则能确保...

    fresh-magento:新鲜的magento

    Magento性能优化** - **缓存管理**:Magento有内置的缓存机制,学会如何开启和管理缓存以提高性能。 - **数据库优化**:理解索引和查询优化对Magento性能的影响。 - **页面速度优化**:减少HTTP请求、压缩资源、...

    magik shoes magento 模板, magento 1.7 模板

    Magento 1.7是Magento的一个重要版本,它包含了多项改进和增强,例如性能优化、安全更新、更好的订单管理功能以及更强大的报告工具。对于商家来说,选择适合的模板对于提高店铺的转化率至关重要。Magik Shoes ...

    The Definitive Guide to Magento (Apress出品 Magento权威指南)

    - **第7章:安全与性能优化** 随着网站流量的增长,安全性和性能成为不可忽视的问题。本章重点讨论了如何保护Magento免受攻击以及如何通过缓存机制等方式提高网站响应速度。 #### 专业知识点 1. **Magento核心...

    magento 1.9.0.1

    四、性能优化: 1. 缓存管理:Magento提供页面缓存、数据库查询缓存等,加快页面加载速度。 2. 平台优化:通过设置如合并CSS和JavaScript、启用压缩等方式提高性能。 五、维护与升级: 1. 数据备份:商家应定期备份...

    Magento2 dev65

    9. **性能优化**:为了提供更好的用户体验,你需要对Magento2进行性能优化,这可能包括开启缓存、启用HTTP2、使用CDN服务、调整Varnish配置等。 10. **持续更新与维护**:定期检查和安装 Magento 的安全补丁和版本...

    magento-java-master.zip_magento

    8. **性能优化**:当处理大量数据或频繁调用API时,考虑缓存策略、批量操作和错误重试机制来提高性能和可靠性。 9. **安全实践**:遵循最佳安全实践,例如加密敏感信息,避免在代码中硬编码API密钥,定期轮换Access...

    Magento php开发指南

    6. 高级功能实现:提供对高级功能实现的指导,如如何集成第三方服务、创建自定义报告、添加搜索引擎优化(SEO)功能,以及如何进行性能优化等。 7. 贡献指南:可能会包含有关如何为Magento开源项目作出贡献的指导,...

    magento数据结构分析

    描述:“Magento数据字典”提供了对Magento系统中各种数据库表的深入理解,这对于理解和优化Magento的性能至关重要。 一、Magento数据结构解析 Magento是一款功能强大的电子商务平台,其复杂的数据结构是支撑其...

    Magento

    8. **优化性能**:为了提高Magento的运行效率,可以进行一些性能优化,比如启用OpCache、设置适当内存限制、使用Varnish做缓存层等。 9. **配置支付网关和物流插件**:Magento集成了多种支付和物流接口,根据业务...

    magento lazyload插件

    Magento LazyLoad 插件是针对Magento电子商务平台设计的一款性能优化工具。它的主要功能是实现图片的延迟加载(Lazy Load),以此提升网站的加载速度和用户体验。在网页浏览时,传统方式下所有图片会一次性全部加载...

    magento-1.7.0.7z

    性能优化** - Magento 1.7.0对性能进行了优化,包括页面缓存、数据库查询优化等,以提升用户购物体验。 - 使用Varnish Cache或Memcached等加速工具可进一步提高系统响应速度。 **6. 安全更新** - Magento 1.7.0...

    magento分页排序插件

    这个分页排序插件可能进行了性能优化,比如使用索引提升查询速度,减少数据库负载,或者利用Ajax技术实现无刷新排序和分页,提高用户体验的同时降低了服务器压力。 五、兼容性和升级 随着Magento版本的更新,插件...

Global site tag (gtag.js) - Google Analytics