60

Strictly speaking, this doesn't answer the question you are asking. I'm hoping it's helpful anyway. Apache/Nginx/Lighttpd/other web server. Does it matter which one I choose? In short, No. The much much longer answer: If, and only if, you have a very large percentage of your users being logged in, should you care at all about the performance of your web ...


43

The README has a guide on how to do this using current 7.x-2.31+ version of AdvAgg. Also see this wiki page on the High performance group. Most sites can achieve a perfect 100/100 score on https://developers.google.com/speed/pagespeed/insights/. Directions on how to achieve it for a fresh of install of AdvAgg below. Be sure to check the site after every ...


32

OK, although this question is already answered, I'm necromancing once more, primarily because I don't like the implications of these answers that it doesn't make a difference, and because as a web developer, I hate caching with a passion. The difference between Apache and nginx is not that much "how fast they can serve a request" but how many requests they ...


27

No, there is no reliable comparison, because doing that is almost impossible. There are various reasons for that, one is that D8 vanilla is like D7 vanilla + a whole bunch of modules, especially views. If you compare a single request on a vanilla installation, then D8 is clearly slower than D7 (even if you add views), quite a bit actually. That might still ...


26

These are notes from my experiences and might vary from what others experience. I predominantly use LAMP stack and have considered the same in my suggestions. Thumb rules for caching that I generally follow. Process Once Use Multiple Times. Live with stale data when possible Clear Caches infrequently and keep it very specific. When possible do the changes ...


24

There are two other ways other users have mentioned for setting the max output levels in addition to the settings.php method mentioned in the question, plus a couple other ideas below: Create a /modules/contrib/devel/kint/kint/config.php file and add / modify the line $_kintSettings['maxLevels'] = 3; (by @mdrummond on Slack) In a preprocess function, add ...


23

These are notes from my experiences and might vary from what others experience. I predominantly use LAMP stack and have considered the same in my suggestions. Thumb rules for caching that I generally follow. Process Once Use Multiple Times. Live with stale data when possible Clear Caches infrequently and keep it very specific. When possible do the changes ...


19

When you uninstall a module, you need to disable it first in Drupal module admin. You should then uninstall it via the "Uninstall" tab there. The same goes for themes, disable in theme admin first. If you for example, delete the module folder on the file system without disabling the module, Drupal will continue to search for the module in the file system, ...


18

Read and follow this post; it assumes InnoDB. In particular, see the part saying to add the following to the settings.php file. $databases['default']['default']['init_commands'] = array('isolation' => "SET SESSION tx_isolation='READ-COMMITTED'");


16

There are three things that I would check. One, if you are on a production site and not editing PHP files, then you should ensure that APC is enabled, has enough memory, and has a long TTL (you could go with a day or never expire if you wanted). You can also consider setting apc.stat=0. The APC docs have all of the information you need for setting the TTL....


16

I switch from Apache to Nginx / PHP-FPM a few month ago. I made some benchmarck with a drupal website, and test several use case. On a VPS server with 1 CPU and 512 Mo RAM Drupal with only cache Nginx ab -n 100 -c 30 xxx Server Software: nginx Document Path: / Document Length: 24902 bytes Concurrency Level: 30 Time taken for ...


14

The Devel module has a query log option, which when enabled will show every query that's been run for a request at the footer of the page. You can enable it at admin/config/development/devel once the module's installed.


14

In many respects the Paragraphs module appears to be a fork of Field Collection. Functionally, the difference between the modules lies in how their respective field widgets operate. The Field Collection widget allows users to embed multiple instances of a single field collection bundle in a node, while Paragraphs allows users to select a different bundle for ...


12

Having multiple webservers behind a load balancer/reverse proxy is quite common for Drupal and well supported. Varnish is typically used in the Linux world because that thing is just insanely fast when being able to actually use it, meaning anonymous visitors. Which is obviously not the case for your site. Sessions are stored in the database by default, so ...


12

The short answer: field_get_items() is more performant than entity_metadata_wrapper(). Check out the code for these functions: field_get_items() entity_metadata_wrapper() Both require that you pass along the entity, which has already been loaded from the database. For example: $node = node_load(123); $items = field_get_items('node', $node, '...


11

Personally, I do not like the way Drupal handles output compression; I take care of this outside of Drupal. On the Drupal site, I add $conf['page_compression'] = FALSE; $conf['css_gzip_compression'] = FALSE; $conf['js_gzip_compression'] = FALSE; to settings.php, and this to a custom module to show that this is disabled: /** * Implements ...


10

You will never get 30 000 inserts a minute using node_save. No way. An INSERT is fast because that's all it does. Node save does multiple inserts (main table, revision table, a table for each field), clears any entity caches, and fires hooks. The hooks are the tricky part. If you have many contrib modules (or even one that misbehaves) that can really kill ...


10

Whenever I edit a node all my page caches are cleared. As per the design : This behavior is intended behavior and works as per the design. If you look at the node_form_submit() node submit handler function within the node module you will notice that there is a cache_clear_all() As the comment in the line above the function call reads it clears the page and ...


10

If you know the name of the view that you want to clear, then you can clear the caches specific to that view by calling a function like the following: /** * Function to invalidate selected views caches to enable the action forms to work */ function mymodule_invalidate_views_cache($view_name) { cache_clear_all('ctools_export:views_view:' . $view_name, '...


10

They perform different tasks. drupal_static() only stores data for the current page load (or ajax load). For example, if you are loading something from a database table multiple times on a single page load (ie - a user account), the first time it is loaded it is saved to memory, and the next time it is needed, it is pulled from memory, rather than reloading ...


9

I always use db_select as I prefer readability, maintainability and cross database compatibility over small performance gains. Moreover, I think the numbers given in the mentioned issue give a wrong image of the overall performance. We are talking a 300 microseconds difference on a query that, when returning more than a single column often run in the multi ...


9

Ivanhoe123 is probably right: Drupal 7 comes with 'poor mans cron' enabled by default. In short, it means that (once in a while) cron is run before Drupal renders the page, delaying everything. Always try to use a real cron job on production sites. For more technical details see http://drupal.org/cron, or talk to your hosting company. To disable it, go to ...


9

Is there any intelligent and graceful way to clear all caches with Drupal besides simply clicking the button in the UI, or using drush cc all? The cache actions module does that. It depends on rule. For exampple, you can setup a rule to clear a specific view when a node of type "x" has been added or updated. Checkout the docs for more details. Also take a ...


9

D8 requires more resources and yes, you should have hosting with opcache enabled, which is included by default in PHP 5.5. Drupal 8 has so many files because it includes symfony and other projects and everything is a class. FTP is a very bad idea for D8 and web in general in 2015. Look for a better way to do web hosting. That said, it should not take that ...


8

The Devel module offers database logging to check whether you have any long running queries. If this doesn't help take either XHProf or XDebug and find the guilty code. XHProf (a profiler) draws you a nice map of all the functions that are being executed on the server, and it tells you which ones are consuming the most execution time. On the other hand, ...


8

It's almost impossible to meaningfully compare the performance of Drupal and Wordpress, because their speed varies widely depending on the configuration and installed modules / plugins. Both are capable of scaling when sites are built by skilled developers. Regarding the Webiny benchmark, it's almost certain that Drupal's page cache was disabled (the ...


8

Code-wise, both Views and displays are represented by objects. When a View is being processed, it loads all it's child displays into memory, regardless if you are rendering only one View in the page you are looking at. While database queries are executed only for the active display, the properties of the inactive displays are still loaded into memory. This ...


8

Unless I'm mistaken. Poormans cron significantly impacts page load performance when cron runs. I only use it on sites I'm quickly working with locally and have no intention of working on in the near future again. Using crontab to run cron completely removes the detrimental performance of using poormans cron, apart from the subsequent page load having to re-...


8

jQuery is part of Drupal core - and because of this, you can't tell WHAT contrib modules are going to be using it. Well, you can, but it'd involve checking any included scripts of any module. Also, you wouldn't remove poll.module or blog.module just for server side performance if you're not using them - I would suggest the same applies to jQuery. I don't ...


8

TL;DR Have as many sub-themes as you want, it's not a problem. Longer answer All types of inheritance, theming or otherwise, will have a performance penalty, and really all logic that you perform will have that effect; However With proper caching enabled, only the very first request that uses the sub-sub-theme, is actually going to notice a difference. ...


Only top voted, non community-wiki answers of a minimum length are eligible