Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

azure cdn purge not refreshing cached content

I have an Azure CDN (Verizon, premium) connected to blob storage. I have 2 rules in place based on step 6 in this tutorial. The rules are designed to force the CDN to serve "index.html" when the root of the CDN is called. They may or may not be relevant to the issue, but they are described in Step 6 as follows:

  1. Make sure the dropdown says “IF” and “Always”
  2. click on “+” button next to “Features” twice.
  3. set the two newly-created dropdowns to “URL Rewrite”
  4. set the all the sources and destination dropdowns to the endpoint you created (the value with the endpoint name)
  5. for the first source pattern, set to ((?:[^\?]/)?)($|\?.)
  6. for the first destination pattern, set to $1index.html$2
  7. for the second source pattern, set to ((?:[^\?]/)?[^\?/.]+)($|\?.)
  8. for the second destination pattern, set to $1/index.html$2

I initially uploaded files to blob storage, was able to hit them via the CDN (demonstrating the above rules worked correctly), and then made changes to the local files (debugging) for uploading to blob storage. After updating all files on blob storage and manually purging the CDN endpoint with the "purge all" option checked, I am served the old files by the CDN, and the new files when hitting blob storage directly. This seems to occur for every file (even when hitting the file directly, not just index.html). This still occurs after waiting ~10hrs, clearing browser cache, and trying browsers never before used to access the CDN.

Does anyone know what may be occurring? Is it cached somewhere between my network and the CDN endpoint? I feel like I'm probably missing something very simple...

edit 1: I have another Verizon (non-premium) CDN connected to the same storage container, and it picks up the correct files after a purge; however, even now (24 hrs later) the premium CDN is not serving the updated files.

edit 2: Called Microsoft support for Azure, and they spent about 6 hours investigating to no avail. We eventually tried purging again, and now the updated files are being sent. Still not sure what the issue was.

like image 321
jpetitte Avatar asked Jul 12 '17 02:07

jpetitte


2 Answers

After working with Microsoft and Verizon Digital Media support for a number of weeks, they finally figured out the solution.

In order to avoid interfering with the purge process, the easiest method is to implement the following "IF" statement before the "Features" portion of your rule:

IF | Request Header Wildcard | Name | User-Agent | Does Not Match | Values | ECPurge/* | Ignore Case (checked)

This if statement will skip this rule altogether for requests made with the purge user agent, allowing the request to hit the CDN as normal.

like image 148
jpetitte Avatar answered Oct 21 '22 03:10

jpetitte


I also found if you purge each file separately, for example, put /css/main.css in 'Content path' when purging instead of 'purge all' it will work

like image 22
Vic Avatar answered Oct 21 '22 03:10

Vic