Archive

Posts Tagged ‘Cache’

ADX Portals – Clear Cache On Web Page Submission

Adxstudio Portal application caches the results from Dynamics CRM to improve the performance.

But, there are times, where we need to override (invalidate) cache behavior to show latest data on Portals. Lets take a scenario

  • My Portal has a ‘Contact’ web page and up on ‘Submit’, a plug-in updates all the associated ‘Cases’ in the background.
  • Now, on Portal, navigate to ‘Cases’ entity list Web Page, which should show the latest ‘Cases’ data, which has been updated by plug-in in above step.

In above scenario, we will not get the latest ‘Cases’ due to Portal Cache behavior.

So what are the ‘Cache Invalidation’ options?

  • Manual Cache Invalidation:
    • This option is to manually hit the JavaScript bookmark-let  as specified here.
    • Drawback:
      • Its not viable, to ask portal users to hit the URL every time they ‘Submit’ the ‘Contact’ web page
  • Web Notifications:
    • A Web Notification Plugin registered with the Adxstudio Portals solution in CRM is triggered on all entity create, update, delete, disassociate, associate, publish, and publish all messages and notifies the Web Notification URLs defined in the CRM to invalidate the cache so the users visiting the portal get the recent data changes
    • Drawback:
      • A ‘System Job’ gets created up on update of the entity, and the execution may get delayed based on the occupancy of CRM Async Service Job.
      • This is not fool proof solution.

ADX Cache_1

We took an approach to automate the ‘Manual Cache Invalidation’ process to fetch the latest CRM data.

Our Cache Invalidation Approach :

  • Create a new ‘Web Page’ and paste below ‘Manual Cache Invalidation JavaScript’ code in ‘Custom JavaScript’ field.
    • Note: You don’t need to associate any ‘Web Form’, ‘Entity List’ or ‘Entity Form’ to this Web Page.

$(document).ready(function () {
var url = document.location.protocol + ‘//’ + document.location.host + (document.location.host.indexOf(“demo.adxstudio.com”) != -1 ? document.location.pathname.split(“/”).slice(0, 3).join(“/”) : “”) + ‘/Cache.axd?Message=InvalidateAll&d=’ + (new Date()).valueOf();
var req = new XMLHttpRequest();
req.open(‘GET’, url, false);
req.send(null);
// Redirect to Portal Home Page
window.location.href = ‘../’;
});

  • In below screen, I created a new Web Page ‘Portal Cache Clear’ and copied the above script.

ADX Cache_2

  • So, to invalidate ‘Cache’ on the ‘Submit’ of any of your Portal form, In Entity Form’s ‘On Success Settings’, Redirect to Cache ‘Web Page’ as configured in below screen.

ADX Cache_3

  • That’s it. Your portal should invalidate cache, up on Entity Form submission. One caveat of this approach is, ‘Portal Cache’ web page will flash for few seconds before redirecting to portal’s ‘Home’ page.

Note:

  • This Information is Relevant to Legacy Adxstudio Portals Only.
  • Dynamics 365 Portal Add-on’s Do Not Require this Configuration.

🙂

 

 

Advertisement
Categories: ADX Tags: ,

Dynamics Portals – Hide Search Control and clear cache

Other day, we got a requirement to hide the ‘Search’ control from our Custom portal.

Search-1

Its very easy to achieve by changing a configuration.

Steps to hide Search control:

  • Go to Portals ->Site Settings ->Search/Enabled record
  • By default the ‘Value’ will be ‘true’, to hide the ‘Search’ change to ‘false’

Search-5

  • Save
  • Refresh the browser and you should not see the ‘Search’ control

Search-2

What if you are still seeing the ‘Search’ control:

Sometimes for some reason (Mostly due to caching), you wont see the change immediately.

In this case you can either reset portal/clear the server side cache by following steps below.

Reset the Portal:

  • If the change is not taken place for all users you might want to reset the portal.
  • Resetting the portal is not feasible option especially when your portal is being tested, as the end users will experience a snag for sometime.
  • But if the Portal is in Development phase and you can reset from your ‘D365 Admin Center’
    • Go to ‘Admin Center’ -> Applications
    • Select your Portal application and click ‘Manage’

Search-4

  • Select ‘Portal Actions’ -> Reset

Search-3

Clear Server Side Cache:

  • You can force the portal to refresh its cache immediately.
  • To clear the server-side cache, sign in to the portal with Administrator web role
  • Navigate to the URL as follows : <Your_portal_URL>/_services/about
    • (i.e., You need to append /_services/about end of your portal URL)
  • Select Clear Cache.
  • Refer this for article more details

🙂