Go to file
Helen Hou-Sandi 3adcda996b Improve oEmbed caching. Introduces the concept of a TTL for oEmbed caches and a filter for oembed_ttl.
We will no longer replace previously valid oEmbed responses with an `{{unknown}}` cache value. When this happens due to reaching a rate limit or a service going down, it is data loss, and is not acceptable. This means that oEmbed caches for a post are no longer deleted indiscriminately every time that post is saved.

oEmbed continues to be cached in post meta, with the addition of a separate meta key containing the timestamp of the last retrieval, which is used to avoid re-requesting a recently cached oEmbed response. By default, we consider a valued cached in the past day to be fresh. This can greatly reduce the number of outbound requests, especially in cases where a post containing multiple embeds is saved frequently.

The TTL used to determine whether or not to request a response can be filtered using `oembed_ttl`, thus allowing for the possibility of respecting the optional oEmbed response parameter `cache_age` or altering the period of time a cached value is considered to be fresh.

Now that oEmbeds are previewed in the visual editor as well as the media modal, oEmbed caches are often populated before a post is saved or published. By pre-populating and avoiding having to re-request that response, we also greatly reduce the chances of a stampede happening when a published post is visible before oEmbed caching is complete.

As it previously stood, a stampede was extremely likely to happen, as the AJAX caching was only triggered when `$_GET['message']` was 1. The published message is 6. We now trigger the caching every time `$_GET['message']` is present on the edit screen, as we are able to avoid triggering so many HTTP requests overall.

props markjaquith. fixes #14759. see #17210.


git-svn-id: https://develop.svn.wordpress.org/trunk@28972 602fd350-edb4-49c9-b593-d223f7449a82
2014-07-03 16:44:15 +00:00
src Improve oEmbed caching. Introduces the concept of a TTL for oEmbed caches and a filter for oembed_ttl. 2014-07-03 16:44:15 +00:00
tests Fix texturization of quotes when enclosed by angle brackets. 2014-07-03 16:21:18 +00:00
tools/i18n i18n tools: Have makepot search for the main file of the plugin. 2014-03-04 21:06:48 +00:00
.editorconfig Multiple strings in .editorconfig section names should be wrapped in curly brackets. 2014-06-24 10:54:41 +00:00
.gitignore Remove twenty* ignore-exclusion lines. Already tracked. 2014-02-26 20:59:25 +00:00
.jshintrc Remove smarttabs from .jshintrc per IRC discussion. see #25187. 2013-11-13 19:23:16 +00:00
.travis.yml Improve Travis CI configuration for better performance. 2014-06-21 20:05:19 +00:00
Gruntfile.js Exclude jshint:plugins from both grunt precommit and grunt travis:js. 2014-06-28 02:08:05 +00:00
package.json Update phpunit grunt task to not use deprecated util package. Run npm install or sudo npm install to get the updates. 2014-06-21 19:44:26 +00:00
phpunit.xml.dist Move PHPUnit tests into a tests/phpunit directory. 2013-08-29 18:39:34 +00:00
wp-cli.yml Introduce default wp-cli.yml for core development. 2014-04-30 21:35:18 +00:00
wp-config-sample.php Move wp-config-sample.php to the root of develop.svn. 2013-08-29 20:45:17 +00:00
wp-tests-config-sample.php Update wp-tests-config-sample.php to run with WP_DEBUG by default. see #25282. 2013-09-23 16:17:59 +00:00