最近我开始开发magento 2项目。
首先,我尝试使用xampp进行Windows操作,这是一个烂摊子...每个刷新页面都是一场噩梦,加载页面大约需要30-40秒。我读到它,Windows系统文件使用magento是如此之慢,因为它具有大型结构,并且文章almmost强迫您使用linux在magento项目上进行开发。
问题是我需要Windows用于另一个仅适用于Windows的公司应用程序,我尝试使用Virtualbox安装虚拟机,它改进了一点......但我在虚拟机上工作的事实很生气我离开......
我现在正在使用的下一个解决方案是使用vagrant。好吧,我觉得这种方式很好,但它一直很慢...... 15-20s ......
我在Vagrant上的配置是5120MB(pc有8GB)并使用我所有的4个核心。
我感觉这么糟糕......当我在以前的项目中工作时,使用symfony / Laravel / Codeigniter,就像是:
编写一些代码行,选项卡到浏览器,F5,立即查看更改。
在M2上:写一些代码行,选项卡到浏览器,F5,等等......等等......好吧现在刷新页面,但是没有加载,等等......等等......嗯几乎......好吧。没有变化,但我清理了缓存...哦,我想我也必须删除静态文件。去吧......再等一下......
上帝...... M2没有办法加速吗?我只是问5s或类似的东西......只是我感觉如此愚蠢,看着屏幕一直在等待...
对于夸大其词,我只是要求开发模式,我尝试必须在生产模式下安装另一个magento项目,以便更快地测试事物,然后再进行测试好吧流畅的地狱与开发者模式相比......因为... omg ...只是尝试一次又一次地做订单工作流程......
那就是全部......我唯一没有尝试过的就是在电脑上使用Linux环境......但它与使用流浪汉的情况完全相同......我不知道#39;了解......你是如何开发M2开发者的?在特殊的前端开发人员...我不相信他们的工作方式和我一样......等待20秒加载页面+清理缓存+删除静态文件等。
详细信息:我尝试了所有与流浪汉但没有改进的东西,我目前使用的是Ubuntu 15.04,Apache 2.4,PHP 5.6(我试过7但仍然相同)mysql 5.6
这是网络标签: http://i.imgur.com/HG7mbeX.png
答案 0 :(得分:4)
2018年更新,Magento 2.2.4
Vagrant + Windows + Magento2 =灾难。 Vagrant + Apple + Magento2 =灾难。
Ubuntu + Magento2 =用煤气烹饪。
简单模块,例如一个小部件,比预期的2-3个小时花费很多天,如果打开一个页面花了一分钟就不可能记住你在做什么,特别是如果你必须清除缓存,编译,升级或其他任何东西这应该是没有时间的。
这是我第一手经验,在办公室工作,选择Mac或Windows。在花了一整天试图更改模板指令并且未能在8小时内进行一次配置更改之后,我考虑过在linux机箱上试一试,看看我是否已经疯了,或者这个Vagrant的设计是否有所帮助醉酒的屁股在路上的公园里睡觉粗糙。
老化的Linux盒子里有贫血的RAM,旧的SSD,库存Apache,没有花哨的缓存,完成任务没有问题,我能够毫不费力地在开发人员和生产模式之间切换,并得到了我花了几天时间没做的事情在几分钟内。
工作机器是第8代i7,Vagrant设置非常有人的宝贝,并且花了很多时间来建造野兽。然而构造板块移动得更快。流浪和虚拟化可能很时尚,但它对M2的开发毫无用处。事实上,我安装了M2并为它完成了所有的db和vhost设置,所花费的时间比构建Vagrant盒的时间短。
至于性能,由于基本的Linux设置上的M2比一些笨拙的Vagrant工作速度快10倍,因此很容易看出Magento 2真正的速度问题在哪里。如果你在Chrome中启动Lighthouse,你会看到TTFB绝对没问题,但如果你缩小并合并JS + CSS,性能会减半。这是因为M2有一个兆字节的脚本要下载。这是性能杀手。如果您正在使用Vagrant盒子,那么您将永远不会看到这一点而没有速度来修复它。通过修复它我的意思是写一个没有废话的正确主题,例如每页上加载jQuery。
对于制作而言,您需要能够进行缩放的内容,以便您可以获得正常的速度增强功能,例如: Redis,操作码缓存,Varnish,调整php-fpm,调整MySQL / MariaDB。如果您正在Linux上进行开发,那么您可以在localhost上测试这些东西,因为他们知道它们可以在生产中正常工作由于令人憎恶的是Vagrant,你会过早地涉足这些优化,因为你希望并为一台高性能机器祈祷,因为你需要完成工作。但是,在这样做的情况下,并且由于缺乏原生速度,您将无法完成任何工作。
如果您没有备用机器来安装Linux,那么只需转到本地提示,获取任何PC,将SSD推入其中,您就可以了。
答案 1 :(得分:2)
我尝试了一切,它唯一有效的是提供bitnami的虚拟机。 https://bitnami.com/stack/magento/virtual-machine
说真的,我不知道这个vm是什么,但是真的很快。我尝试使用全新安装的Ubuntu,CentOS等来创建我的虚拟机。但是这样的虚拟机没有那么好用。
答案 2 :(得分:2)
如果您在开发人员模式下工作,则需要禁用JS / CSS合并,禁用xdebug并启用opcache。随时在您的开发数据库和刷新缓存上运行MySQL查询。这将在开发人员模式下提高网站性能。
UPDATE core_config_data SET value = '0' WHERE path = 'dev/css/merge_css_files';
UPDATE core_config_data SET value = '0' WHERE path = 'dev/css/minify_files';
UPDATE core_config_data SET value = '0' WHERE path = 'dev/js/merge_files';
UPDATE core_config_data SET value = '0' WHERE path = 'dev/js/minify_files';
UPDATE core_config_data SET value = '0' WHERE path = 'dev/js/enable_js_bundling';
UPDATE core_config_data SET value = '0' WHERE path = 'dev/static/sign';
答案 3 :(得分:1)
我的食谱:
使用* nix作为主要操作系统
使用docker with PHP 7和Nginx
使用gulp生成css和js(比grunt快)
使用redis和varnish
仅禁用所需的缓存
最有价值的建议 - 如果你仍然想在硬盘上开发,你真的需要SSD 与magento2一起使用
p / s Magento 2比Symfony / Laravel / CI更复杂(M2包括Symfony 顺便说一下)并且不能像纯框架那么快答案 4 :(得分:1)
在“开发人员”模式下,所有缓存均被禁用。这就是为什么magento变慢的原因。 我建议通过执行命令
启用缓存 ./bin/magento cache:enable
但是,每次修改xml文件或配置时,您都需要清除缓存./bin/magento cache:clean
。
答案 5 :(得分:0)
对于生产环境:
您必须使用Redis来处理缓存,整页缓存和会话 (http://devdocs.magento.com/guides/v2.0/config-guide/redis/config-redis.html)
您必须将Varnish用于Magento内置的HTTP缓存 (http://devdocs.magento.com/guides/v2.1/config-guide/varnish/config-varnish.html)
您需要设置生产Magento模式。 (http://devdocs.magento.com/guides/v2.1/config-guide/bootstrap/magento-modes.html)
您必须将ElasticSearch用于搜索引擎,仅限EE (http://devdocs.magento.com/guides/v2.1/config-guide/elasticsearch/es-overview.html)
您必须使用PHP 7
即使Magento 2不支持MariaDB,也可以使用MariaDB。
您必须使用CSS缩小和JS缩小以及JS捆绑(仅适用于生产模式)。
检查官方Magento 2文档以设置此生产配置。
答案 6 :(得分:0)
尝试禁用与默认流浪汉同步文件夹的同步(只需在VagrantFile中注释config.vm.synced_folder并重新加载) - 当需要处理大量文件时,它会变慢...
在开发人员模式下,生成静态文件也很有用:
bin/magento setup:static-content:deploy
并确保已启用所有缓存:bin/magento cache:status
如果它没有用,您可以尝试基于Docker的Magento DevBox工具:http://devdocs.magento.com/guides/v2.1/install-gde/docker/docker-over.html
答案 7 :(得分:0)
这里有点晚了,但我认为在处理vagrant / docker时的答案主要是文件的I / O非常慢。
我的解决方案就是禁用整个共享文件夹并将其替换为PhpStorm中的远程项目(sftp连接)。所有文件都存储在虚拟机中,每次页面需要重新加载时都不必同步。
当然,主要的好处是,在开发人员模式下工作时速度惊人。
但使用此设置时也存在一些小问题:
您无法直接从终端运行命令。你必须ssh到你的流浪汉运行magento2 cli命令。
运行作曲家更新后,您可能需要再次下载整个文件夹,因为在PhpStorm中不会自动下载远程更改。
答案 8 :(得分:0)
我做了这个无业游民,使您可以自定义安装选项并具有出色的性能:
/var/www/magento/app
或整个项目/var/www/magento
https://github.com/zepgram/magento2-fast-vm
您可以进行快速的magento安装并根据您的工作习惯和主机性能来调整参数。
例如,如果您的主机不支持NFS选项并且性能不佳,则只能安装足以进行开发的应用目录。
答案 9 :(得分:0)
这是我在本地环境中为Magento 2.2和2.3开发主题/模块的方法:
valet use 7.1
或valet use 7.2
轻松地在PHP版本之间切换)https://github.com/weprovide/valet-plus php bin/magento deploy:mode:set developer
var/cache
文件夹或generated/code
文件夹的内容以进行DI更改。专门减慢所有速度的缓存类型是配置缓存,因此必须启用它,否则前端/后端页面的加载速度会非常缓慢。这仍然不是一个完美的设置,但这是迄今为止我发现不脱头发的最快方法。
答案 10 :(得分:0)
@亨利的猫是对的。非linux操作系统+ Magento2 =灾难。
如果您不努力使用xml,则可以打开magento缓存
bin/magento cache:enable
并在修改这些文件中的内容时使用bin/magento cache:clean
或更好的方法是禁用某些缓存类型bin/magento cache:disable db_ddl full_page
。 @Igor Sydorenko绝对正确,禁用CSS js合并/最小化将改善很多开发人员模式的性能。
答案 11 :(得分:0)
为了给开发人员带来灵活性,Magento生成了大量文件。如果它以生产模式运行,则最慢的部分是可以优化的磁盘读取。 但是在开发人员模式下运行Magento 2时,磁盘读取和写入操作使它变得太慢。
我在开发Magento 2应用程序时也遇到了同样的情况。我的第一个建议是转向SSD。但是,不可能每次都每个人都如此。 我也无法在具有大量RAM和CPU功能的高端笔记本电脑中安装SSD。
我找到了一种解决方法,该解决方案使使用Redis缓存的localhost中的开发变得相当快。缓存清理和加热变得非常快,这极大地减少了我等待更改的等待时间。 Here is the full article to use Redis cache in localhost with Magento 2。
答案 12 :(得分:0)
好的,所以我大约从6-8个月开始使用Magento 2.2.7。因此,您应该考虑一些注意事项:
1。(如果可能)使用 SSD 硬盘
2。。在magento中配置grunt。它肯定会有助于使magento的前端发展迅速。因为grunt无需执行s:s:d命令即可帮助编译较少的文件。
grunt with magento
3。。请勿启用xdebug。
4。。仅当您连续重新加载页面太多次时,才禁用缓存。
答案 13 :(得分:0)
我尝试了许多机器和许多配置,例如:
bitnami机器的问题:不太容易为Xdebug配置
在我的经验中,最好的是为那些想要在Windows上工作的人提供的无所事事的机器: https://app.vagrantup.com/certiprosolutions
因此,请在您的Vagrant文件上使用此配置:
config.vm.box = "certiprosolutions/ubuntu-lnmp"
config.vm.box_check_update = false
# box modifications, including memory limits and box name.
config.vm.provider "virtualbox" do |vb|
vb.name = "Magento 2.3.3 ubuntu ngnix"
vb.memory = 8240
vb.cpus = 2
#vb.customize [ "modifyvm", :id, "--uartmode1", "disconnected" ]
end
优势:
一点注释。要使xdebug正常工作,您应该将xdebug的配置更改为:
[XDEBUG]
zend_extension=xdebug.so
xdebug.default_enable = 1
xdebug.remote_enable = 1
xdebug.remote_connect_back = 1
xdebug.remote_autostart = true
xdebug.remote_handler = dbgp
xdebug.remote_port = 9001
xdebug.remote_host=127.0.0.1
xdebug.remote_log="/tmp/xdebug72.log"
;xdebug.max_nesting_level = 1000