magento性能优化的学科(非常详尽)

Magento是一样拟专业开源之电子商务系统,Magento设计得非常灵活,具有模块化架构体系与丰富的力量可生朋友见面意识此模块用到了会发觉不行之缓慢了,那么下我们来拘禁有关magento性能优化的例证。

前面优化

mod_deflate模块,将text、 css 和 javascript
先进行削减再发送至浏览器。这样便会见回落网络下载量,缩短等待时,示例如下:

# Insert filter on all content
    SetOutputFilter DEFLATE
    # Insert filter on selected content types only
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css
text/javascript application/javascript
 
    # Netscape 4.x has some problems…
    BrowserMatch ^Mozilla/4 gzip-only-text/html
 
    # Netscape 4.06-4.08 have some more problems
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
 
    # MSIE masquerades as Netscape, but it is fine
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
 
    # Don’t compress images
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip
dont-vary
 
    # Make sure proxies don’t deliver the wrong content
    Header append Vary User-Agent env=!dont-vary
 
    # enable resulting html compression
    php_flag zlib.output_compression on

启用Expires Headers

注意:这同部署于Litespeed servers无效
浏览器采用 Expires
Headers来规定页面组件可以叫缓存多长时间。静态的预制构件,如图像,可以安装为永不过期,但要么建议设置一个Expires
Headers。要开拓这个特点,可以收回注释对应之行并添加”ExpiresActive On”
如下所示:

ExpiresActive On
    ExpiresDefault “access plus 1 year”

禁用 ETags
ETags(Entity
tags)是服务器和浏览器的一个意义,它用来判定浏览器缓存里的元素是否以及本服务器上之一律。ETags比last-modified
date更有着弹性,它用一个旷世之字符串来标识一个要素的本。
要关张它怪简单,做法如下:
FileETag none

日志太好,执行如下sql:

truncate dataflow_batch_export;
truncate dataflow_batch_import;
truncate log_customer;
truncate log_quote;
truncate log_summary;
truncate log_summary_type;
 
truncate log_url;
truncate log_url_info;
truncate log_visitor;
truncate log_visitor_info;
truncate log_visitor_online;
 
truncate report_viewed_product_index;
truncate report_compared_product_index;
truncate report_event;
 
set foreign_key_checks = 0;
truncate index_process_event;
truncate index_event;
set foreign_key_checks = 1;

mysql配置优化,充分发挥你的硬件资源,下面的数值要因你的部署调整

key_buffer_size = 512M
max_allowed_packet = 64M
table_cache = 512
sort_buffer_size = 4M
net_buffer_length = 8K
read_buffer_size = 4M
read_rnd_buffer_size = 2M
myisam_sort_buffer_size = 64M
tmp_table_size = 128M
query_cache_size = 96M
query_cache_type = 1
thread_cache_size = 8
max_connections = 400
wait_timeout = 300
5、将magento的var目录挂载到外存中,加快读取速度,如

mount -t tmpfs -o size=100M,mode=0777 tmpfs var

6、安装php加速器,如APC,XCACHE,eAccelerator,安装方式参考相关的网站

而是归于根本,最特别之优化来于对模板,对代码,对block的优化。

 

 

每当Magento的优化中,
Mysql的优化是坏要紧之,在Magento的官方网给有了关于Mysql的优化,
官方网并不曾使我们管Mysql的积存引擎改也innodb,
但我清醒的得及时是十分有必不可少之,当改化innodb后,还得管Mysql的布局文件修改修改下,
有时因官方的文档来并无能够成功, 这时就要扣您的条件一旦迟早了,
下面为有己所安排的mysql文件被大家参考:

(继续)

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql
3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
default-character-set=utf8
#init_connect=’SET NAMES utf8′
default-storage_engine = innodb

# To allow mysqld to connect to a MySQL Cluster management daemon,
uncomment
# these lines and adjust the connectstring as needed.
#ndbcluster
#ndb-connectstring=”nodeid=4;host=localhost:1186″

[client]
#default-character-set=utf8

[mysqld_safe]
log-error=/var/log/mysqld.log

[Magento]
max_connections = 1000
max_connect_error = 10
table_cache = 1024
max_allowed_packet = 16M
max_heap_table_size = 64M
sort_buffer_size = 8M
join_buffer_size = 8M
thread_cache_size = 8
thread_concurrency = 8
query_cache_size = 64M
query_cache_limit = 2M
tmp_tables_size = 64M
key_buffer_size = 32M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_max_extra_sort_file_size=10G
myisam_repair_threads = 1
myisam_recover
innodb_additional_mem_pool_size = 16M
innodb_log_buffer_size = 8M
innodb_log_file_size = 512M
innodb_log_files_in_group = 2
innodb_buffer_pool_size = 3G
innodb_data_file_path = ibdata1:3G;ibdata2:1G:autoextend
innodb_autoextend_increment=512

 Apache优化

这里要谈的是,自己编译的Apache, 而如果是系自带的话,
Apache所需的模块, 系统会自动加载。

(继续)

#vi httpd.conf

ServerTokens OS

ServerRoot “/etc/httpd”

PidFile run /httpd.pid

Timeout 120

KeepAlive off

MaxkeepAliveRequests 100

KeepAliveTimeout 15

StartServers                100

MinSpareServers      100

MaxSpareServers    150

ServerLimit               256

MaxClient                  256

MaxRequestsPerChild  40000

Listen *:80

以这边还要有不能不的Apache模块

1,  mod_authz_host.so

2,  mod_expires.so

3,  mod_deflate.so

4,  mod_mime.so

5,  mod_dir.so

6,  mod_rewrite.so     这个模块很要紧, 当设置Magento地址重写时,要为此到

7,  mod_log_config.so

8, libphp5.so            你出或为此之凡php4, 那就得转成为libphp4.so

注意:

在安装好Apache后, 我们还会叫Apache识别以php为后缀的公文

AddType application/x-httpd-php .php .phtml

哼了, 到即就算出言得了了, 这节其实对Magento的优化不慌, 但有些模块又未能够少,
少了, Magento后台可能出题目

 

 

当我们设置好Magento时,
为了加速Magento的速度,我们一般还要做一些对Magento服务之优化,
来提高Magento被拜的快慢。 一般我们见面由三单角度去考虑Magento的优化,
如: 安装Magento的体系; Magento模板被之代码; Magento所用到的数据库。
在当下我们最主要谈的是Magento系统的优化

php配置优化

Magento是在PHP环境下支付的,
所以优化PHP对Magento有着不略的影响,下面是Magento标准的PHP配置。

(继续)

无异于, 对于Magento所用的扩张, 只开所待的便可了

# Required extensions

extension=bcmath.so

extension=curl.so

extension=dom.so

extension=gd.so

extension=mcrypt.so

extension=memcache.so

extension=mhash.so

extension=pdo.so

extension=pdo_mysql.so

extension=mysql.so

extension=xmlwriter.so

下的部分扩大并不需要开启, 我们得以将她关闭

# Not  needed extensions from default setup

;;extension=dbase.so

;;extension=json.so

;;extension=mysqli.so

;;extension=pdo_sqlite.so

;;extension=sqlite.so

;;extension=wddx.so

;;extension=smlreader.so

;;extension=xsl.so

;;extesnion=zip.so

转业不管绝对, 当你的网环境亟待有扩展时, 可以按用开启

下所设摆的, 也是PHP中优化的要紧, 将会见讲到第二种艺术,二增选同虽行了,
切忌, 不能够而且使二种植方案

一,安装APC扩展, APC, 用来优化PHP本身, 提高PHP的周转速度

# APC configuration apecifics if it is used

extension=apc.so

apc.shm_size=256

apc.num_files_hint=10000

apc.user_entries_hint=10000

apc.max_file_size=5M

二,安装eaccelerator加速器,功能跟APC类似, 在当时就算无多说了。

安装好eaccelerator后,将见面产生eaccelerator模块

zend_extension=”/usr/lib64/php/modules/eaccelerator.so”

eaccelerator.shm_size = “256”

简言之的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

magento后台设置

 

开产品以及产品分类的 Flat 功能。

敞开者作用后系统会为产品和成品分类的次第局视图建立单独的数目表以储存相关属性之数码,在编辑产品以及归类信息之时呢会见又创新这些数据表。
前台要博取产品数据的时段,程序由这些独立的表中读取数据,而不管需从多单 EAV
关联表中读取。这样做足由此削减数据表的联立查询,有效地增强前台对成品数量的询问速度。

开启方法是到后台 System / Configuration > CATALOG / Catalog >
Frontend 中,分别以 Use Flat Catalog Category 和 Use Flat Catalog
Product 设成 Yes 并保存。

 

装 CRON-JOB 定期清理 Log 信息。

Magento 的 Log
模块会将片网站访问记录、用户登录信息、购物车修改情况等记录到数据库被。这些数量多矣就是会见受数据库变得十分臃肿,非常影响数读取速度。因此我们应当被
log 信息自动清理功能,并安装 CRON-JOB 定期进行清理。

后台开关路径为 System / Configuration > ADVANCED / System > Log
Cleaning / Enable Log Cleaning。

 

关闭系统 Log 功能。

Magento 系统的 Log
功能会拿一些运转信息或者错信息记录及硬盘中。这些消息一般就当网站开发阶段才见面为此到,并且可能造成数之
I/O 操作,影响程序运行效率。因此网站上丝后当将这功效关闭。

后台开关路径也 System / Configuration > ADVANCED / Developer > Log
Settings / Enabled。

 

展 Javascript 及 CSS 文件整合力量。

翻开 Javascript 及 CSS 文件整合职能可以把经 layout 加载的基本上只
Javascript 和 CSS
文件分别构成。这样做的好处是好减小资源要数量,加速下载速度,降低服务器负责。

为重新好地以这项设置,开发之当儿理应尽量把 Javascript
整理及剧本文件里并通过 layout
进行加载,这样被设置后有的本子还能但透过同样赖呼吁虽加载了了。

后台开关路径分别吗 System / Configuration > ADVANCED / Developer >
JavaScript Settings / Enabled 和 System / Configuration > ADVANCED /
Developer > CSS Settings / Enabled。

 

否 Skin、Media、Javascript 设置 CDN 或者不同之子域名。

鉴于一般浏览器对同样域名之起请求数量都生限制,这样便页面上起为数不少资源要加载,也不得不一个个地由服务器遭受读取,无法到位以加载多只资源,影响页面渲染效率。

后台装置路径分别吗 System / Configuration > GENERAL / Web >
Unsecure 及 System / Configuration > GENERAL / Web > Secure 下的
Base Skin URL、Base Media URL 和 Base JavaScript URL。

 

被系统缓存。

可以说开系统缓存是极有效之提速措施,因为打开后可将初始化和逻辑计算的结果直接保存至缓存中,跳了许多又的程序操作,最直接地省程序运行时间跟资源。

拉开缓存的道是到后台 System / Cache Management
页面的列表中勾选需要缓存的花色,再择列表右上角 Actions 的 Enable
并点击 Submit 按钮。

 

闭馆没有下的原生模块。

Magento
页面初始化的下会找和归并有组件的布置文件,并拿这些零部件的以数据库中之版和部署文件的版本进行比较,进一步实施组件的翻新操作。不管打开的页面
中是否会面用及,系统都见面对具有被的机件执行这些工作。显然,如果将品种蒙尚无采取的模块也同投入初始化是挺浪费资源的,可以拿未用的原生模块关闭
掉。

由模块之间有着关联,不是每个模块都能够好真独立,部分模块关闭后或者致后台出现问题。为了好开发,在此地整理了部分得以大概就安全关的原生模块。

网站地图xml地图