The attached patch checks the hashes generated during the hook_block() $op "list" against what is already set before saving them. This prevents variable set from clearing the variable cache when nothing has changed.
| Comment | File | Size | Author |
|---|---|---|---|
| compare_views_block_hash.patch | 770 bytes | jmiccolis |
Comments
Comment #1
jmiccolis commentedFYI this patch also applies to the 3.x branch (with a 7 line offset).
Comment #2
dawehnerManual testing worked fine. I added a block from a view with a long name.
-> the variable_set is called
->goto admin/build/blocks again, no call to variable_set.
Code looks fine
Comment #3
catchThis causes a 1 second hit on every page view on a D6 site I have in dev, bumping to critical. Patch looks good and fixes the issue.
Comment #4
nrambeck commented+1
We have blocks in panel panes sitewide which cause hook_block('list') to be executed on every page. Because of this variable_set() in views_block('list') our variable cache is rendered useless causing a significant performance hit.
Comment #5
dawehnerI'm not sure whether this is how panels should it be.
Comment #6
merlinofchaos commentedFixed in 6.x-2.x and 6.x-3.x -- does not apply to 7.x but almost certainly needs to be fixed there as well.
Comment #7
dawehnerThe patch did not applied because hook_block($op = 'list' got converted to hook_block_info
And commited.