
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
    <channel>
        <title><![CDATA[ The Cloudflare Blog ]]></title>
        <description><![CDATA[ Get the latest news on how products at Cloudflare are built, technologies used, and join the teams helping to build a better Internet. ]]></description>
        <link>https://blog.cloudflare.com</link>
        <atom:link href="https://blog.cloudflare.com/" rel="self" type="application/rss+xml"/>
        <language>en-us</language>
        <image>
            <url>https://blog.cloudflare.com/favicon.png</url>
            <title>The Cloudflare Blog</title>
            <link>https://blog.cloudflare.com</link>
        </image>
        <lastBuildDate>Tue, 14 Apr 2026 23:05:20 GMT</lastBuildDate>
        <item>
            <title><![CDATA[Increasing Cache Hit Rates with Query String Sort]]></title>
            <link>https://blog.cloudflare.com/increasing-cache-hit-rates-with-query-string-sort/</link>
            <pubDate>Tue, 07 Jul 2015 16:20:24 GMT</pubDate>
            <description><![CDATA[ At CloudFlare, we care a lot about serving requests as fast as possible. Files can be served much faster when already in CloudFlare’s cache. ]]></description>
            <content:encoded><![CDATA[ 
    <div>
      <h3>Optimized Performance: Increasing Cache Hit Rate</h3>
      <a href="#optimized-performance-increasing-cache-hit-rate">
        
      </a>
    </div>
    <p>At CloudFlare, we care a lot about serving requests as fast as possible. Files can be served much faster when already in CloudFlare’s cache. Skipping the trip to the customer’s web server eliminates the latency of that connection and saves bandwidth from the connection between CloudFlare and the customer’s origin, and allows us to utilize the full speed of our <a href="/a-tour-inside-cloudflares-latest-generation-servers/">ultra-fast servers</a>.</p><p>By default, CloudFlare only caches <a href="https://support.cloudflare.com/hc/en-us/articles/200172516-What-file-extensions-does-CloudFlare-cache-for-static-content-">static files</a>. However, Page Rules can be utilized to set more files as cacheable. For more information on Page Rules, please see the <a href="https://support.cloudflare.com/hc/en-us/categories/200276257">Page Rules section of our knowledge base</a>.</p><p>Items are cached by their full URL, including the <a href="https://en.wikipedia.org/wiki/Query_string">query string</a>. However, due to the details of how query strings work, this can lead to some cache misses. There is no RFC which defines that the order of query strings arguments matter, but in some (rare) cases they do. Thus, by default, CloudFlare caches the following two requests separately:</p><p><code>https://example.com/a?color=red&amp;word=hi</code><code>https://example.com/a?word=hi&amp;color=red</code></p>
    <div>
      <h3>Introducing Query String Sort</h3>
      <a href="#introducing-query-string-sort">
        
      </a>
    </div>
    <p>With a newly available Enterprise-level feature called <a href="https://support.cloudflare.com/hc/en-us/articles/206776797">Query String Sort</a>, CloudFlare will first sort the query strings in a URL into a deterministic order before checking cache for the resource or requesting it from the origin, meaning that the URLs:</p><p><code>https://example.com/a?color=red&amp;day=friday&amp;word=hi</code><code>https://example.com/a?color=red&amp;word=hi&amp;day=friday</code><code>https://example.com/a?day=friday&amp;color=red&amp;word=hi</code><code>https://example.com/a?day=friday&amp;word=hicolor=red</code><code>https://example.com/a?word=hi&amp;color=red&amp;day=friday</code><code>https://example.com/a?word=hi&amp;day=friday&amp;color=red</code></p><p>will all be cached and be requested from the origin as:<code>https://example.com/a?color=red&amp;day=friday&amp;word=hi</code></p><p>This feature is especially useful for API servers, which often rely heavily on multiple query string arguments. Remember, we chose an examples with only two and three arguments, but the number of permutations of a set of n elements is n!.</p>
    <div>
      <h3>Turning on Query String Sort</h3>
      <a href="#turning-on-query-string-sort">
        
      </a>
    </div>
    <p>To turn on the feature, Enterprise customers can visit the Caching app in the CloudFlare dashboard.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5burjDqMkPea4hnGWW3kKa/f29414a770464a3fe402b992c40eb554/Screen-Shot-2015-07-06-at-10-15-54-PM.png" />
            
            </figure><p>Customers who are interested in learning more about our Enterprise plan can <a href="https://www.cloudflare.com/enterprise-service-request">get in touch with us here</a>.</p> ]]></content:encoded>
            <category><![CDATA[Speed & Reliability]]></category>
            <category><![CDATA[Cache]]></category>
            <guid isPermaLink="false">qFRFCrNLcuLwwjTc5EosU</guid>
            <dc:creator>Rajeev Sharma</dc:creator>
        </item>
        <item>
            <title><![CDATA[Protecting web origins with Authenticated Origin Pulls]]></title>
            <link>https://blog.cloudflare.com/protecting-the-origin-with-tls-authenticated-origin-pulls/</link>
            <pubDate>Fri, 27 Feb 2015 23:50:45 GMT</pubDate>
            <description><![CDATA[ As we have been discussing this week, securing the connection between CloudFlare and the origin server is arguably just as important as securing the connection between end users and CloudFlare.  ]]></description>
            <content:encoded><![CDATA[ <p>As we have been discussing this week, securing the connection between Cloudflare and the origin server is arguably just as important as securing the connection between end users and Cloudflare. The <a href="/universal-ssl-encryption-all-the-way-to-the-origin-for-free/">origin certificate authority</a> we announced this week will help CloudFlare verify that it is talking to the correct origin server. But what about verification in the opposite direction? How can the origin verify that the client talking to it is actually CloudFlare?</p>
    <div>
      <h3>TLS Client Authentication</h3>
      <a href="#tls-client-authentication">
        
      </a>
    </div>
    
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4j8yHcLklM13sQFFE5NLds/f8d792142a8982d3fd71718990ffcc1c/illustration-tls-ssl-standard-1.png" />
            
            </figure><p>TLS (the modern version of SSL) allows a client to verify the identity of the server it is talking to. Normally, a TLS handshake is one-way, that is, the client is able to verify the server's identity, but the server is not able to verify the client's identity. What about when both sides need to verify each other's identity?</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4IJu2fHHc7jni7nKl63g16/a42aeadfa66be1e0c5255b4eeed0b7f5/illustration-tls-ssl-client-auth.png" />
            
            </figure><p>Enter <a href="http://en.wikipedia.org/wiki/Transport_Layer_Security#Client-authenticated_TLS_handshake">TLS Client Authentication</a>. In a client authenticated TLS handshake both sides provide a certificate to be verified. If the origin server is configured to only accept requests which use a valid client certificate from Cloudflare, requests which have not passed through Cloudflare will be dropped (as they will not have our certificate). This means that attackers cannot circumvent CloudFlare features such as our <a href="https://www.cloudflare.com/waf">WAF</a>, even via an attack like <a href="http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_10-4/104_ip-spoofing.html">TCP source IP spoofing</a> which could typically be used make an origin server believe malicious requests have passed through CloudFlare's network.</p><p>To implement TLS client authentication in Cloudflare, one of our engineers, Piotr Sikora, <a href="http://hg.nginx.org/nginx/rev/20d966ad5e89">added support to nginx</a>. This code is open source and has been merged into the official nginx 1.7 branch, and can be used by anyone utilizing nginx's proxy module.</p>
    <div>
      <h3>Enabling Authenticated Origin Pulls</h3>
      <a href="#enabling-authenticated-origin-pulls">
        
      </a>
    </div>
    <p>Generally, enabling Authenticated Origin Pulls does not cause any problems with a website, even if client certificates are not validated. However, in the event a website uses client certificates for other purposes, the Cloudflare origin-pull certificate may conflict and cause problems. Consequently, Authenticated Origin Pulls are an opt-in setting for Cloudflare customers. This service is available for all levels of Cloudflare plan: Free, Professional, Business, and Enterprise.</p><p>In order to enable Authenticated Origin Pulls for your Cloudflare protected website, you will need to use our new dashboard (currently in beta). To access this beta dashboard, first log in to your Cloudflare account. In the lower right corner of the page there is a button labeled "Try Our New Dashboard." Click and log in again. At this point, you're in our new dashboard with access to all your existing domains and settings through a completely new user interface.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/3WKbGYfpdrkkxQXYOw7OqV/1acb9dc527efbf728a719fc885923b45/Screen-Shot-2015-02-27-at-15-16-11.png" />
            
            </figure><p>There will be more information about this new dashboard in the near future, but feel free to check it out. You can continue to freely switch between old and new dashboard.</p>
    <div>
      <h3>Certificate</h3>
      <a href="#certificate">
        
      </a>
    </div>
    <p>Cloudflare presents certificates signed by a CA with the following certificate:</p>
            <pre><code>
-----BEGIN CERTIFICATE-----
MIIGBjCCA/CgAwIBAgIIV5G6lVbCLmEwCwYJKoZIhvcNAQENMIGQMQswCQYDVQQG
EwJVUzEZMBcGA1UEChMQQ2xvdWRGbGFyZSwgSW5jLjEUMBIGA1UECxMLT3JpZ2lu
IFB1bGwxFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xEzARBgNVBAgTCkNhbGlmb3Ju
aWExIzAhBgNVBAMTGm9yaWdpbi1wdWxsLmNsb3VkZmxhcmUubmV0MB4XDTE1MDEx
MzAyNDc1M1oXDTIwMDExMjAyNTI1M1owgZAxCzAJBgNVBAYTAlVTMRkwFwYDVQQK
ExBDbG91ZEZsYXJlLCBJbmMuMRQwEgYDVQQLEwtPcmlnaW4gUHVsbDEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzETMBEGA1UECBMKQ2FsaWZvcm5pYTEjMCEGA1UEAxMa
b3JpZ2luLXB1bGwuY2xvdWRmbGFyZS5uZXQwggIiMA0GCSqGSIb3DQEBAQUAA4IC
DwAwggIKAoICAQDdsts6I2H5dGyn4adACQRXlfo0KmwsN7B5rxD8C5qgy6spyONr
WV0ecvdeGQfWa8Gy/yuTuOnsXfy7oyZ1dm93c3Mea7YkM7KNMc5Y6m520E9tHooc
f1qxeDpGSsnWc7HWibFgD7qZQx+T+yfNqt63vPI0HYBOYao6hWd3JQhu5caAcIS2
ms5tzSSZVH83ZPe6Lkb5xRgLl3eXEFcfI2DjnlOtLFqpjHuEB3Tr6agfdWyaGEEi
lRY1IB3k6TfLTaSiX2/SyJ96bp92wvTSjR7USjDV9ypf7AD6u6vwJZ3bwNisNw5L
ptph0FBnc1R6nDoHmvQRoyytoe0rl/d801i9Nru/fXa+l5K2nf1koR3IX440Z2i9
+Z4iVA69NmCbT4MVjm7K3zlOtwfI7i1KYVv+ATo4ycgBuZfY9f/2lBhIv7BHuZal
b9D+/EK8aMUfjDF4icEGm+RQfExv2nOpkR4BfQppF/dLmkYfjgtO1403X0ihkT6T
PYQdmYS6Jf53/KpqC3aA+R7zg2birtvprinlR14MNvwOsDOzsK4p8WYsgZOR4Qr2
gAx+z2aVOs/87+TVOR0r14irQsxbg7uP2X4t+EXx13glHxwG+CnzUVycDLMVGvuG
aUgF9hukZxlOZnrl6VOf1fg0Caf3uvV8smOkVw6DMsGhBZSJVwao0UQNqQIDAQAB
o2YwZDAOBgNVHQ8BAf8EBAMCAAYwEgYDVR0TAQH/BAgwBgEB/wIBAjAdBgNVHQ4E
FgQUQ1lLK2mLgOERM2pXzVc42p59xeswHwYDVR0jBBgwFoAUQ1lLK2mLgOERM2pX
zVc42p59xeswCwYJKoZIhvcNAQENA4ICAQDKDQM1qPRVP/4Gltz0D6OU6xezFBKr
LWtDoA1qW2F7pkiYawCP9MrDPDJsHy7dx+xw3bBZxOsK5PA/T7p1dqpEl6i8F692
g//EuYOifLYw3ySPe3LRNhvPl/1f6Sn862VhPvLa8aQAAwR9e/CZvlY3fj+6G5ik
3it7fikmKUsVnugNOkjmwI3hZqXfJNc7AtHDFw0mEOV0dSeAPTo95N9cxBbm9PKv
qAEmTEXp2trQ/RjJ/AomJyfA1BQjsD0j++DI3a9/BbDwWmr1lJciKxiNKaa0BRLB
dKMrYQD+PkPNCgEuojT+paLKRrMyFUzHSG1doYm46NE9/WARTh3sFUp1B7HZSBqA
kHleoB/vQ/mDuW9C3/8Jk2uRUdZxR+LoNZItuOjU8oTy6zpN1+GgSj7bHjiy9rfA
F+ehdrz+IOh80WIiqs763PGoaYUyzxLvVowLWNoxVVoc9G+PqFKqD988XlipHVB6
Bz+1CD4D/bWrs3cC9+kk/jFmrrAymZlkFX8tDb5aXASSLJjUjcptci9SKqtI2h0J
wUGkD7+bQAr+7vr8/R+CBmNMe7csE8NeEX6lVMF7Dh0a1YKQa6hUN18bBuYgTMuT
QzMmZpRpIBB321ZBlcnlxiTJvWxvbCPHKHj20VwwAz7LONF59s84ZsOqfoBv8gKM
s0s5dsq5zpLeaw==
-----END CERTIFICATE-----</code></pre>
            <p>This certificate is also available from <a href="https://origin-pull.cloudflare.com/">https://origin-pull.cloudflare.com/</a></p>
    <div>
      <h3>Origin Server Configuration</h3>
      <a href="#origin-server-configuration">
        
      </a>
    </div>
    <p>We will include configuration examples for popular web servers in our <a href="https://developers.cloudflare.com/ssl/origin-configuration/authenticated-origin-pull/set-up/">Cloudflare Support Docs</a> in the next week.</p>
            <figure>
            
            <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1JjE8Qn3bmZblfN1zNWzb8/33c2ed63f0bf710fba2a75a38cc955a8/cloudflare_ssl-week-2-1.png" />
            
            </figure> ]]></content:encoded>
            <category><![CDATA[TLS]]></category>
            <category><![CDATA[Partners]]></category>
            <category><![CDATA[Security]]></category>
            <guid isPermaLink="false">76qt7j67GQSEQ2Tk4MUGYr</guid>
            <dc:creator>Rajeev Sharma</dc:creator>
        </item>
    </channel>
</rss>