How much does using htaccess files slow down website performance (especially with solid state disks)?
From an answer on Quora by Jonathan Klein, 12ms for a 1500 line .htaccess
file:
Having a large .htaccess does have a cost. Ours is currently ~1500 lines and we benchmarked the time spent parsing it at around 10-12ms on a production webserver. Hardware makes a difference obviously, but you can fairly safely assume that the cost of that 3000 line .htaccess is around 25-35ms per request.
Apache .htaccess vs httpd - does it really matter?
Well, to my knowledge, the performance difference is negilible, comparred to the computing time used for whatever's used in the .htaccess. For what's it's worth, I've seen no measurable difference by having a .htaccess
file.
Cached, PHP generated Thumbnails load slowly
First, using those multiple domains requires several DNS lookups. You'd be better off combining many of those images into a sprite instead of spreading the requests.
Second, when I load your page, I see most of the blocking (~1.25s) on all.js. I see that begins with (an old version of) jQuery. You should reference that from the Google CDN, to not only decrease load time, but potentially avoid an HTTP request for it entirely.
Specifically, the most current jQuery and jQuery UI libraries can be referenced at these URLs (see this post if you're interested why I omitted the http:
):
//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js
//ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js
If you're using one of the default jQuery UI themes, you can also pull its CSS and images off the Google CDN.
With the jQuery hosting optimized, you should also combine awmlib2.js
and tooltiplib.js
into a single file.
If you address those things, you should see a significant improvement.
Why is Magento so slow?
I've only been tangentially involved in optimizing Magento for performance, but here's a few reasons why the system is so slow
Parts of Magento use an EAV database system implemented on top of MySQL. This means querying for a single "thing" often means querying multiple rows
There's a lot of things behind the scenes (application configuration, system config, layout config, etc.) that involve building up giant XML trees in memory and then "querying" those same trees for information. This takes both memory (storing the trees) and CPU (parsing the trees). Some of these (especially the layout tree) are huge. Also, unless caching is on, these tree are built up from files on disk and on each request.
Magento uses its configuration system to allow you to override classes. This is a powerful feature, but it means anytime a model, helper, or controller is instantiated, extra PHP instructions need to run to determine if an original class file or an override class files is needed. This adds up.
Besides the layout system, Magento's template system involves a lot of recursive rendering. This adds up.
In general, the Magento Engineers were tasked, first and foremost, with building the most flexible, customizable system possible, and worry about performance later.
The first thing you can do to ensure better performance is turn caching on (System -> Cache Management). This will relieve some of the CPU/disk blocking that goes on while Magento is building up its various XML trees.
The second thing you'll want to do is ensure your host and operations team has experience performance tuning Magento. If you're relying on the $7/month plan to see you through, well, good luck with that.
Related Topics
Delete All Files Except the Newest 3 in Bash Script
How to Save the Output of This Awk Command to File
What Makes a Kernel/Os Real-Time
Why Doesn't "History | Vim" Work
How to Get the Exit Status a Loop in Bash
Sharing Devices (Webcam, Usb Drives, etc) with Docker
How to Call a Function (Defined in Shell Script) in a Perl Script
Running a Qt Application at Startup
Sort Logs by Date Field in Bash
Dependency Walker Equivalent for Linux
Does Cron Expression in Unix/Linux Allow Specifying Exact Start and End Dates
How to Program for Linux's New 'Fanotify' File System Monitoring Feature
How to Load Jna Native Support Library Elasticsearch 6.X
Split Files Based on File Content and Pattern Matching