{"id":735,"date":"2014-06-25T12:00:03","date_gmt":"2014-06-25T16:00:03","guid":{"rendered":"https:\/\/reviewsignal.com\/blog\/?p=735"},"modified":"2017-02-23T04:26:22","modified_gmt":"2017-02-23T09:26:22","slug":"40-million-hits-a-day-on-wordpress-using-a-10-vps","status":"publish","type":"post","link":"https:\/\/reviewsignal.com\/blog\/2014\/06\/25\/40-million-hits-a-day-on-wordpress-using-a-10-vps\/","title":{"rendered":"40 Million hits a day on WordPress using a $10 VPS"},"content":{"rendered":"<p>I recently tested many\u00a0of the biggest names in managed WordPress hosting in my article <a title=\"Managed WordPress Hosting Showdown \u2013 Performance Benchmarks Comparison\" href=\"https:\/\/reviewsignal.com\/blog\/2014\/03\/26\/managed-wordpress-hosting-showdown-performance-benchmarks\/\">Managed WordPress Hosting Performance Benchmarks<\/a>. (<strong>Update: <a href=\"https:\/\/reviewsignal.com\/blog\/2016\/09\/14\/wordpress-hosting-performance-benchmarks-2016\/\">2016 WordPress Hosting Performance Benchmarks<\/a><\/strong>) I am\u00a0preparing to do a second round of testing with double the number of companies on board. Some of us like to setup servers ourselves (or are cheap).<\/p>\n<p><strong>Given a reasonable VPS, what sort of performance can we get out of it?<\/strong><\/p>\n<p>10 million hits as measured by <a href=\"http:\/\/blitz.io\/bhmeMI5LF0Pc8neVAZEL2wv\">Blitz.io<\/a> was the benchmark to beat based on a <a href=\"http:\/\/ewan.im\/900\/10-million-hits-a-day-with-wordpress-using-a-15-server\">previous<\/a> iteration of this question.<\/p>\n<p>I decided to test this from the ground up, let's start with the most basic configuration and gradually try to improve it.<\/p>\n<p>All tests were performed on a $10\/Month 1GB Ram <a href=\"http:\/\/clicks.reviewsignal.com\/out.php?c=101&amp;t=blog-40m-wordpress\">Digital Ocean<\/a> VPS running Ubuntu 14.04x64. All code and documentation are also <a href=\"https:\/\/github.com\/kevinohashi\/WordPressVPS\">available on GitHub<\/a>.<\/p>\n<p><strong>LAMP Stack<\/strong><\/p>\n<p>Based on my previous experience benchmarking WordPress, I didn't have high hopes for this test. Last time I crashed MySql almost instantly. This time I ran Blitz a lot slower, from 1-50 users. The performance wasn't impressive, it started slowing down almost immediately and continued to get worse. No surprises.<\/p>\n<p><a href=\"https:\/\/reviewsignal.com\/blog\/wp-content\/uploads\/2014\/06\/default-lamp.png\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-737\" src=\"https:\/\/reviewsignal.com\/blog\/wp-content\/uploads\/2014\/06\/default-lamp.png\" alt=\"default-lamp\" width=\"673\" height=\"297\" srcset=\"https:\/\/reviewsignal.com\/blog\/wp-content\/uploads\/2014\/06\/default-lamp.png 673w, https:\/\/reviewsignal.com\/blog\/wp-content\/uploads\/2014\/06\/default-lamp-625x275.png 625w, https:\/\/reviewsignal.com\/blog\/wp-content\/uploads\/2014\/06\/default-lamp-624x275.png 624w\" sizes=\"(max-width: 673px) 100vw, 673px\" \/><\/a><\/p>\n<p><i>The LAMP stack setup script is <a href=\"https:\/\/github.com\/kevinohashi\/WordPressVPS\/blob\/master\/setup-default-LAMP.sh\">available on GitHub<\/a>. Download full Blitz results from <a href=\"https:\/\/github.com\/kevinohashi\/WordPressVPS\/raw\/master\/loadtest_results\/default-lamp.pdf\">LAMP Stack (PDF)<\/a>.<\/i><\/p>\n<p><strong>LAMP + PHP5-FPM<\/strong><\/p>\n<p>The next thing I tried was <a href=\"http:\/\/php-fpm.org\/about\/\">PHP-FPM<\/a>(FastCGI Process Manager). It got slightly better performance with just under 200ms faster response times at 50 users. But the graph looks pretty similar, we're seeing quickly increasing response times as the number of users goes up. Not a great improvement.<\/p>\n<p><a href=\"https:\/\/reviewsignal.com\/blog\/wp-content\/uploads\/2014\/06\/lamp-php-fpm.png\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-738\" src=\"https:\/\/reviewsignal.com\/blog\/wp-content\/uploads\/2014\/06\/lamp-php-fpm.png\" alt=\"lamp-php-fpm\" width=\"656\" height=\"303\" srcset=\"https:\/\/reviewsignal.com\/blog\/wp-content\/uploads\/2014\/06\/lamp-php-fpm.png 656w, https:\/\/reviewsignal.com\/blog\/wp-content\/uploads\/2014\/06\/lamp-php-fpm-625x288.png 625w, https:\/\/reviewsignal.com\/blog\/wp-content\/uploads\/2014\/06\/lamp-php-fpm-624x288.png 624w\" sizes=\"(max-width: 656px) 100vw, 656px\" \/><\/a><\/p>\n<p><i>The LAMP+ PHP5-FPM setup script is <a href=\"https:\/\/github.com\/kevinohashi\/WordPressVPS\/blob\/master\/setup-lamp-php-fpm.sh\">available on GitHub.<\/a> Download full Blitz results from <a href=\"https:\/\/github.com\/kevinohashi\/WordPressVPS\/raw\/master\/loadtest_results\/lamp-php-fpm.pdf\">LAMP+PHP5-FPM (PDF)<\/a>.<\/i><\/p>\n<p><strong>Nginx + PHP-FPM (aka LEMP Stack)<\/strong><\/p>\n<p>Maybe the problem is Apache? I tried Nginx next. What happened? I got a worse performance than the default LAMP stack (wtf?). Everyone said Nginx was faster. Turns out, it's not magically faster than Apache (and appears worse out of the box).<\/p>\n<p><a href=\"https:\/\/reviewsignal.com\/blog\/wp-content\/uploads\/2014\/06\/lemp-php-fpm.png\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-739\" src=\"https:\/\/reviewsignal.com\/blog\/wp-content\/uploads\/2014\/06\/lemp-php-fpm.png\" alt=\"lemp-php-fpm\" width=\"650\" height=\"305\" srcset=\"https:\/\/reviewsignal.com\/blog\/wp-content\/uploads\/2014\/06\/lemp-php-fpm.png 650w, https:\/\/reviewsignal.com\/blog\/wp-content\/uploads\/2014\/06\/lemp-php-fpm-625x293.png 625w, https:\/\/reviewsignal.com\/blog\/wp-content\/uploads\/2014\/06\/lemp-php-fpm-624x292.png 624w\" sizes=\"(max-width: 650px) 100vw, 650px\" \/><\/a><\/p>\n<p><i>The LEMP + PHP-FPM setup script is <a href=\"https:\/\/github.com\/kevinohashi\/WordPressVPS\/blob\/master\/setup-nginx-php-fpm.sh\">available on GitHub.<\/a> Download full Blitz results from <a href=\"https:\/\/github.com\/kevinohashi\/WordPressVPS\/raw\/master\/loadtest_results\/lemp-php-fpm.pdf\">LEMP+PHP-FPM (PDF)<\/a>.<\/i><\/p>\n<p><strong>Microcaching<\/strong><\/p>\n<p>I've written about creating a <a title=\"Reverse Proxy and Cache Server with Nginx\" href=\"https:\/\/reviewsignal.com\/blog\/2013\/08\/29\/reverse-proxy-and-cache-server-with-nginx\/\">reverse proxy and cache in nginx<\/a> before. But I've already setup Nginx as my web server, I don't need to reverse proxy this time. Nginx has <a href=\"http:\/\/nginx.org\/en\/docs\/http\/ngx_http_fastcgi_module.html\">fastcgi_cache<\/a>\u00a0which allows us to cache results from fastcgi processes (PHP). So I applied the same technique here and the results were staggering. The response time dropped to 20ms (+\/- 2ms) and it scaled from 1 to 1000 concurrent users.<\/p>\n<blockquote><p><strong>\"This rush generated 28,924 successful hits in 60 seconds and we transferred\u00a0218.86 MB of data in and out of your app. The average hit rate of\u00a0482\/second translates to about 41,650,560 hits\/day.\"<\/strong><\/p><\/blockquote>\n<p>All that with only 2 errors (connection timeouts).<\/p>\n<p><a href=\"https:\/\/reviewsignal.com\/blog\/wp-content\/uploads\/2014\/06\/lemp-microcache.png\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-740\" src=\"https:\/\/reviewsignal.com\/blog\/wp-content\/uploads\/2014\/06\/lemp-microcache.png\" alt=\"lemp-microcache\" width=\"635\" height=\"291\" srcset=\"https:\/\/reviewsignal.com\/blog\/wp-content\/uploads\/2014\/06\/lemp-microcache.png 635w, https:\/\/reviewsignal.com\/blog\/wp-content\/uploads\/2014\/06\/lemp-microcache-625x286.png 625w, https:\/\/reviewsignal.com\/blog\/wp-content\/uploads\/2014\/06\/lemp-microcache-624x285.png 624w\" sizes=\"(max-width: 635px) 100vw, 635px\" \/><\/a><\/p>\n<p><i>The LEMP + PHP-FPM + microcaching setup script is\u00a0<a href=\"https:\/\/github.com\/kevinohashi\/WordPressVPS\/blob\/master\/setup-nginx-php-fpm-microcache.sh\">available on GitHub.<\/a>\u00a0Download full Blitz results from\u00a0<a href=\"https:\/\/github.com\/kevinohashi\/WordPressVPS\/raw\/master\/loadtest_results\/lemp-php-fpm-microcache-1000-worker_connections_1536.pdf\">LEMP+PHP-FPM + microcaching (PDF)<\/a>.<\/i><\/p>\n<p><strong>Mircocaching Config Walkthrough<\/strong><\/p>\n<p>We do the standard<\/p>\n\n<div class=\"wp_syntax\"><table><tr><td class=\"code\"><pre class=\"bash\" style=\"font-family:monospace;\"><span style=\"color: #c20cb9; font-weight: bold;\">apt-get update<\/span>\n<span style=\"color: #c20cb9; font-weight: bold;\">apt-get<\/span> <span style=\"color: #660033;\">-y<\/span> <span style=\"color: #c20cb9; font-weight: bold;\">install<\/span> nginx\n<span style=\"color: #c20cb9; font-weight: bold;\">sudo<\/span> <span style=\"color: #c20cb9; font-weight: bold;\">apt-get<\/span> <span style=\"color: #660033;\">-y<\/span> <span style=\"color: #c20cb9; font-weight: bold;\">install<\/span> mysql-server mysql-client\n<span style=\"color: #c20cb9; font-weight: bold;\">apt-get install<\/span> <span style=\"color: #660033;\">-y<\/span> php5-mysql php5-fpm php5-gd php5-cli<\/pre><\/td><\/tr><\/table><\/div>\n\n<p>This gets us Nginx, MySql and PHP-FPM.<\/p>\n<p>Next we need to tweak some PHP-FPM settings. I am using some one liners to edit \/etc\/php5\/fpm\/php.ini and \/etc\/php5\/fpm\/pool.d\/www.conf to uncomment and change some settings [turning cgi.fix_pathinfo=0 and uncommenting the listen.(owner|group|mode) settings].<\/p>\n\n<div class=\"wp_syntax\"><table><tr><td class=\"code\"><pre class=\"bash\" style=\"font-family:monospace;\"><span style=\"color: #c20cb9; font-weight: bold;\">sed<\/span> <span style=\"color: #660033;\">-i<\/span> <span style=\"color: #ff0000;\">&quot;s\/^;cgi.fix_pathinfo=1\/cgi.fix_pathinfo=0\/&quot;<\/span> <span style=\"color: #000000; font-weight: bold;\">\/<\/span>etc<span style=\"color: #000000; font-weight: bold;\">\/<\/span>php5<span style=\"color: #000000; font-weight: bold;\">\/<\/span>fpm<span style=\"color: #000000; font-weight: bold;\">\/<\/span>php.ini\n<span style=\"color: #c20cb9; font-weight: bold;\">sed<\/span> <span style=\"color: #660033;\">-i<\/span> <span style=\"color: #ff0000;\">&quot;s\/^;listen.owner = www-data\/listen.owner = www-data\/&quot;<\/span> <span style=\"color: #000000; font-weight: bold;\">\/<\/span>etc<span style=\"color: #000000; font-weight: bold;\">\/<\/span>php5<span style=\"color: #000000; font-weight: bold;\">\/<\/span>fpm<span style=\"color: #000000; font-weight: bold;\">\/<\/span>pool.d<span style=\"color: #000000; font-weight: bold;\">\/<\/span>www.conf\n<span style=\"color: #c20cb9; font-weight: bold;\">sed<\/span> <span style=\"color: #660033;\">-i<\/span> <span style=\"color: #ff0000;\">&quot;s\/^;listen.group = www-data\/listen.group = www-data\/&quot;<\/span> <span style=\"color: #000000; font-weight: bold;\">\/<\/span>etc<span style=\"color: #000000; font-weight: bold;\">\/<\/span>php5<span style=\"color: #000000; font-weight: bold;\">\/<\/span>fpm<span style=\"color: #000000; font-weight: bold;\">\/<\/span>pool.d<span style=\"color: #000000; font-weight: bold;\">\/<\/span>www.conf\n<span style=\"color: #c20cb9; font-weight: bold;\">sed<\/span> <span style=\"color: #660033;\">-i<\/span> <span style=\"color: #ff0000;\">&quot;s\/^;listen.mode = 0660\/listen.mode = 0660\/&quot;<\/span> <span style=\"color: #000000; font-weight: bold;\">\/<\/span>etc<span style=\"color: #000000; font-weight: bold;\">\/<\/span>php5<span style=\"color: #000000; font-weight: bold;\">\/<\/span>fpm<span style=\"color: #000000; font-weight: bold;\">\/<\/span>pool.d<span style=\"color: #000000; font-weight: bold;\">\/<\/span>www.conf<\/pre><\/td><\/tr><\/table><\/div>\n\n<p>Now make sure we create a folder for our cache<\/p>\n\n<div class=\"wp_syntax\"><table><tr><td class=\"code\"><pre class=\"bash\" style=\"font-family:monospace;\"><span style=\"color: #c20cb9; font-weight: bold;\">mkdir<\/span> <span style=\"color: #000000; font-weight: bold;\">\/<\/span>usr<span style=\"color: #000000; font-weight: bold;\">\/<\/span>share<span style=\"color: #000000; font-weight: bold;\">\/<\/span>nginx<span style=\"color: #000000; font-weight: bold;\">\/<\/span>cache<\/pre><\/td><\/tr><\/table><\/div>\n\n<p>Which will we need in our Nginx configs. In our <span style=\"color: #333333;\">\/etc\/nginx\/sites-available\/<\/span><a href=\"https:\/\/github.com\/kevinohashi\/WordPressVPS\/blob\/master\/nginx-php-fpm-microcache\/default\">default<\/a> config we add this into our server {} settings. We also make sure to add index.php to our index command and set our server_name to a domain or IP.<\/p>\n\n<div class=\"wp_syntax\"><table><tr><td class=\"code\"><pre class=\"bash\" style=\"font-family:monospace;\">location ~ \\.php$ <span style=\"color: #7a0874; font-weight: bold;\">&#123;<\/span>\n\t\ttry_files <span style=\"color: #007800;\">$uri<\/span> =<span style=\"color: #000000;\">404<\/span>;\n\t\tfastcgi_split_path_info ^<span style=\"color: #7a0874; font-weight: bold;\">&#40;<\/span>.+\\.php<span style=\"color: #7a0874; font-weight: bold;\">&#41;<\/span><span style=\"color: #7a0874; font-weight: bold;\">&#40;<\/span><span style=\"color: #000000; font-weight: bold;\">\/<\/span>.+<span style=\"color: #7a0874; font-weight: bold;\">&#41;<\/span>$;\n\t\tfastcgi_cache  microcache;\n\t\tfastcgi_cache_key <span style=\"color: #007800;\">$scheme<\/span><span style=\"color: #007800;\">$host<\/span><span style=\"color: #007800;\">$request_uri<\/span><span style=\"color: #007800;\">$request_method<\/span>;\n\t\tfastcgi_cache_valid <span style=\"color: #000000;\">200<\/span> <span style=\"color: #000000;\">301<\/span> <span style=\"color: #000000;\">302<\/span> 30s;\n\t\tfastcgi_cache_use_stale updating error timeout invalid_header http_500;\n\t\tfastcgi_pass_header Set-Cookie;\n\t\tfastcgi_pass_header Cookie;\n\t\tfastcgi_ignore_headers Cache-Control Expires Set-Cookie;\n\t\tfastcgi_pass unix:<span style=\"color: #000000; font-weight: bold;\">\/<\/span>var<span style=\"color: #000000; font-weight: bold;\">\/<\/span>run<span style=\"color: #000000; font-weight: bold;\">\/<\/span>php5-fpm.sock;\n\t\tfastcgi_index index.php;\n\t\tinclude fastcgi_params;\n<span style=\"color: #7a0874; font-weight: bold;\">&#125;<\/span><\/pre><\/td><\/tr><\/table><\/div>\n\n<p>Then we move on to our <span style=\"color: #333333;\">\/etc\/nginx\/<\/span><a href=\"https:\/\/github.com\/kevinohashi\/WordPressVPS\/blob\/master\/nginx-php-fpm-microcache\/nginx.conf\">nginx.conf<\/a> and make a few changes. Like increasing our worker_connections. We also add this line in our http{} before including our other configs:<\/p>\n\n<div class=\"wp_syntax\"><table><tr><td class=\"code\"><pre class=\"bash\" style=\"font-family:monospace;\">fastcgi_cache_path <span style=\"color: #000000; font-weight: bold;\">\/<\/span>usr<span style=\"color: #000000; font-weight: bold;\">\/<\/span>share<span style=\"color: #000000; font-weight: bold;\">\/<\/span>nginx<span style=\"color: #000000; font-weight: bold;\">\/<\/span>cache<span style=\"color: #000000; font-weight: bold;\">\/<\/span>fcgi <span style=\"color: #007800;\">levels<\/span>=<span style=\"color: #000000;\">1<\/span>:<span style=\"color: #000000;\">2<\/span> <span style=\"color: #007800;\">keys_zone<\/span>=microcache:10m <span style=\"color: #007800;\">max_size<\/span>=1024m <span style=\"color: #007800;\">inactive<\/span>=1h;<\/pre><\/td><\/tr><\/table><\/div>\n\n<p>This creates our fastcgi_cache.<\/p>\n<p>All of these are done in somewhat ugly one-liners in the script (if someone has a cleaner way of doing this, please share!), I've cleaned them up and provided the full files for comparison.<\/p>\n<p><strong>Go Big or Go Home<br \/>\n<\/strong><\/p>\n<p>Since Nginx didn't seem to blink when I hit it with 1000 users, I wondered how high it would really go. So I tried from 1-3000 users and guess what?<\/p>\n<blockquote><p><strong>\"This rush generated 95,116 successful hits in 60 seconds and we transferred\u00a0808.68 MB of data in and out of your app. The average hit rate of\u00a01,585\/second translates to about 136,967,040 hits\/day.\"<\/strong><\/p><\/blockquote>\n<p>The problem was I started getting errors: \"<i>4.74% of the users during this rush\u00a0experienced timeouts or errors!<\/i>\" But it amazingly peaked at an astonishing 2,642 users per second. I watched my processes while the test was running and saw all 4 nginx workers fully maxing out the CPU (25% each) while the test was running. I think I hit the limit a 1GB, 1 Core VPS can handle. This setup was a champ though, I'm not sure what caused the big spike (perhaps a cache refresh), but if you wanted to roll your own WordPress VPS and serve a lot of static content, this template should be a pretty good starting point.<br \/>\n<a href=\"https:\/\/reviewsignal.com\/blog\/wp-content\/uploads\/2014\/06\/lemp-microcache-3000.png\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-744\" src=\"https:\/\/reviewsignal.com\/blog\/wp-content\/uploads\/2014\/06\/lemp-microcache-3000.png\" alt=\"lemp-microcache-3000\" width=\"642\" height=\"291\" srcset=\"https:\/\/reviewsignal.com\/blog\/wp-content\/uploads\/2014\/06\/lemp-microcache-3000.png 642w, https:\/\/reviewsignal.com\/blog\/wp-content\/uploads\/2014\/06\/lemp-microcache-3000-625x283.png 625w, https:\/\/reviewsignal.com\/blog\/wp-content\/uploads\/2014\/06\/lemp-microcache-3000-624x282.png 624w\" sizes=\"(max-width: 642px) 100vw, 642px\" \/><\/a><\/p>\n<p><i>Download full results of <a href=\"https:\/\/github.com\/kevinohashi\/WordPressVPS\/raw\/master\/loadtest_results\/lemp-php-fpm-microcache-3000-worker_connections_3072.pdf\">3000 users blitz test (PDF)<\/a><\/i><\/p>\n<p><strong>Conclusion<\/strong><\/p>\n<p>There are definitely a lot of improvements that can be made on this config. It doesn't optimize anything that doesn't hit the cache (which will be any dynamic content, most often logged in users). It doesn't talk about security at all. It doesn't do a lot of things. If you aren't comfortable editing php, nginx and other linux configs\/settings and are running an important website, you probably should go with a managed wordpress company. If you really need performance and can't manage it yourself, you need to look at our <a title=\"Managed WordPress Hosting Showdown \u2013 Performance Benchmarks Comparison\" href=\"https:\/\/reviewsignal.com\/blog\/2014\/03\/26\/managed-wordpress-hosting-showdown-performance-benchmarks\/\">Managed WordPress Hosting Performance Benchmarks<\/a>. If you just want a good web hosting company, take a look at our <a href=\"https:\/\/reviewsignal.com\/webhosting\/compare\">web hosting reviews\u00a0and comparison table<\/a>.<\/p>\n<p>All code and documentation is <a href=\"https:\/\/github.com\/kevinohashi\/WordPressVPS\">available on GitHub<\/a><\/p>\n<p><strong>Thanks and Credits:<\/strong><\/p>\n<p>The title was inspired by Ewan Leith's post <a href=\"http:\/\/ewan.im\/900\/10-million-hits-a-day-with-wordpress-using-a-15-server\">10 Million hits a day on WordPress using a $15 server<\/a>.\u00a0Ewan built a server that handled 250 users\/second without issue using Varnish, Nginx, PHP-APC, and W3 Total Cache.<\/p>\n<p>A special thanks goes to <a href=\"http:\/\/clicks.reviewsignal.com\/out.php?c=33&amp;t=blog-40m-wordpress\">A Small Orange <\/a>who have let me test up multiple iterations of their LEMP stack and especially Ryan MacDonald at ASO who spent a lot of time talking WordPress performance with me.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I recently tested many\u00a0of the biggest names in managed WordPress hosting in my article Managed WordPress Hosting Performance Benchmarks. (Update: 2016 WordPress Hosting Performance Benchmarks) I am\u00a0preparing to do a second round of testing with double the number of companies on board. Some of us like to setup servers ourselves (or are cheap). Given a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[47],"tags":[18,25,74,27,48],"_links":{"self":[{"href":"https:\/\/reviewsignal.com\/blog\/wp-json\/wp\/v2\/posts\/735"}],"collection":[{"href":"https:\/\/reviewsignal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/reviewsignal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/reviewsignal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/reviewsignal.com\/blog\/wp-json\/wp\/v2\/comments?post=735"}],"version-history":[{"count":16,"href":"https:\/\/reviewsignal.com\/blog\/wp-json\/wp\/v2\/posts\/735\/revisions"}],"predecessor-version":[{"id":1804,"href":"https:\/\/reviewsignal.com\/blog\/wp-json\/wp\/v2\/posts\/735\/revisions\/1804"}],"wp:attachment":[{"href":"https:\/\/reviewsignal.com\/blog\/wp-json\/wp\/v2\/media?parent=735"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/reviewsignal.com\/blog\/wp-json\/wp\/v2\/categories?post=735"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/reviewsignal.com\/blog\/wp-json\/wp\/v2\/tags?post=735"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}