<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dispatcher Archives - Sourced Code</title>
	<atom:link href="https://sourcedcode.com/blog/category/aem/dispatcher/feed" rel="self" type="application/rss+xml" />
	<link>https://sourcedcode.com</link>
	<description>AEM Blog Made Just for You.</description>
	<lastBuildDate>Fri, 10 Apr 2026 20:15:24 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.4.8</generator>

<image>
	<url>https://sourcedcode.com/wp-content/uploads/2019/09/cropped-favicon-32x32.png</url>
	<title>Dispatcher Archives - Sourced Code</title>
	<link>https://sourcedcode.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Pipeline-Free URL Redirects &#038; ACS Commons Redirect Map Manager Now Supported on AEMaaCS</title>
		<link>https://sourcedcode.com/blog/aem/pipeline-free-url-redirects-acs-commons-redirect-map-manager-now-supported-on-aemaacs</link>
					<comments>https://sourcedcode.com/blog/aem/pipeline-free-url-redirects-acs-commons-redirect-map-manager-now-supported-on-aemaacs#respond</comments>
		
		<dc:creator><![CDATA[briankasingli]]></dc:creator>
		<pubDate>Thu, 07 Nov 2024 02:11:50 +0000</pubDate>
				<category><![CDATA[AEM]]></category>
		<category><![CDATA[AEMaaCS]]></category>
		<category><![CDATA[Caching]]></category>
		<category><![CDATA[Dispatcher]]></category>
		<guid isPermaLink="false">https://sourcedcode.com/?p=7520</guid>

					<description><![CDATA[<p>Adobe’s recent AEM version 18311 release (October 28-30, 2024) brings valuable updates for URL redirection management in AEM as a Cloud Service (AEMaaCS). This release introduces Pipeline-Free URL Redirects and, importantly, full support for ACS Commons Redirect Map Manager. These changes allow AEM developers to manage URL redirects directly within the AEM Cloud environment, with [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://sourcedcode.com/blog/aem/pipeline-free-url-redirects-acs-commons-redirect-map-manager-now-supported-on-aemaacs">Pipeline-Free URL Redirects &#038; ACS Commons Redirect Map Manager Now Supported on AEMaaCS</a> appeared first on <a rel="nofollow" href="https://sourcedcode.com">Sourced Code</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Adobe’s recent <strong>AEM version <a href="https://experienceleague.adobe.com/en/docs/experience-manager-cloud-service/content/release-notes/maintenance/2024/2024-10-0?lang=en#18311" rel="noopener" target="_blank">18311</a></strong> release (October 28-30, 2024) brings valuable updates for URL redirection management in <strong>AEM as a Cloud Service (AEMaaCS)</strong>. This release introduces <strong><a href="https://experienceleague.adobe.com/en/docs/experience-manager-cloud-service/content/implementing/content-delivery/pipeline-free-url-redirects" rel="noopener" target="_blank">Pipeline-Free URL Redirects</a></strong> and, importantly, full support for <strong><a href="https://adobe-consulting-services.github.io/acs-aem-commons/features/redirect-map-manager/index.html" rel="noopener" target="_blank">ACS Commons Redirect Map Manager</a></strong>. These changes allow AEM developers to manage URL redirects directly within the AEM Cloud environment, with improved performance, scalability, and flexibility.</p>
<div class="mention-block">
    <strong>Quick Links</strong></p>
<ol>
<li><a href="#background_redirect_map_manager_vs_redirect_manager_in_aemaacs">Background: Redirect Map Manager vs. Redirect Manager in AEMaaCS</a></li>
<li><a href="#key_benefits_of_the_new_setup">Key Benefits of the New Setup</a></li>
<li><a href="#how_to_configure_pipeline_free_url_redirects_with_redirect_map_manager">How to Configure Pipeline-Free URL Redirects with Redirect Map Manager</a></li>
<li><a href="#conclusion">Conclusion</a></li>
</ol>
</div>
<p><a href="https://sourcedcode.com/wp-content/uploads/2024/11/adobes-redirect-solutions.png"><img fetchpriority="high" decoding="async" src="https://sourcedcode.com/wp-content/uploads/2024/11/adobes-redirect-solutions.png" alt="Adobe's Supported AEMaaCS Redirect Solutions" width="1642" height="872" class="alignnone size-full wp-image-7524" srcset="https://sourcedcode.com/wp-content/uploads/2024/11/adobes-redirect-solutions.png 1642w, https://sourcedcode.com/wp-content/uploads/2024/11/adobes-redirect-solutions-300x159.png 300w, https://sourcedcode.com/wp-content/uploads/2024/11/adobes-redirect-solutions-1024x544.png 1024w, https://sourcedcode.com/wp-content/uploads/2024/11/adobes-redirect-solutions-768x408.png 768w, https://sourcedcode.com/wp-content/uploads/2024/11/adobes-redirect-solutions-1536x816.png 1536w, https://sourcedcode.com/wp-content/uploads/2024/11/adobes-redirect-solutions-600x319.png 600w" sizes="(max-width: 1642px) 100vw, 1642px" /></a></p>
<hr class="spacer-large"/>
<h2 id="background_redirect_map_manager_vs_redirect_manager_in_aemaacs">Background: Redirect Map Manager vs. Redirect Manager in AEMaaCS</h2>
<p>Previously, <strong>ACS Commons Redirect Map Manager</strong> was unsupported on AEMaaCS, limiting options for handling redirects. As a workaround, customers needed to use <strong>ACS Commons Redirect Manager</strong>, which came with several challenges:</p>
<ul>
<li><strong>Reliance on Dispatcher Rules</strong>: Redirect Manager required that all redirect requests pass through the Dispatcher’s rules to reach the AEM publishers, where Redirect Manager rules could then be executed. This dependency on Dispatcher configurations often led to complications. Only requests meeting specific Dispatcher criteria reached the publisher, and requests blocked by earlier Dispatcher rules (e.g., rules for file types or specific paths) would bypass the publisher entirely, causing some redirects to fail.</li>
<li><strong>Potential for Conflicting Rules</strong>: Dispatcher has its own rewrite rules, which can sometimes interfere with redirects set in Redirect Manager. If a Dispatcher rewrite rule processes a request before it reaches Redirect Manager, it can override the redirect, leading to unexpected behaviors or even redirect loops. This makes troubleshooting and coordinating rules more challenging.</li>
<li><strong>Increased Maintenance and Complexity</strong>: Coordinating Dispatcher rules with Redirect Manager required ongoing adjustments to ensure consistency across both levels. This setup added maintenance overhead, as new rules or configurations in the Dispatcher required verification to avoid interfering with existing redirects.</li>
</ul>
<p>With <strong>AEM version <a href="https://experienceleague.adobe.com/en/docs/experience-manager-cloud-service/content/release-notes/maintenance/2024/2024-10-0?lang=en#18311" rel="noopener" target="_blank">18311</a></strong> and the support for <strong>ACS Commons Redirect Map Manager</strong>, these limitations are greatly reduced. Redirect Map Manager now allows redirect processing to be handled entirely at the edge by the Dispatcher, minimizing reliance on AEM publishers and aligning with Adobe’s best practices for cloud environments.</p>
<hr class="spacer-large"/>
<h2 id="key_benefits_of_the_new_setup">Key Benefits of the New Setup</h2>
<h3>1. Offloading Redirects to the Dispatcher</h3>
<p>With <strong>ACS Commons Redirect Map Manager</strong>, redirect processing is managed at the Dispatcher level, reducing the need for requests to be handled by publishers. This shift improves performance and scalability:</p>
<ul>
<li><strong>Previous Configuration with Redirect Manager</strong>: The first request for a redirect had to be processed by the AEM publisher, placing load on the AEM instance until CDN caching took effect. For high-traffic sites, this dependency on the publisher created potential performance bottlenecks.</li>
<li><strong>New Configuration with Redirect Map Manager</strong>: Redirects are processed directly by the Dispatcher, with CDN caching supporting subsequent requests. This reduces publisher load and improves response times, allowing for smoother handling of large-scale redirects.</li>
</ul>
<h3>2. Simplified Management with Fewer Conflicts</h3>
<p>Redirect Map Manager reduces the likelihood of conflicts with Apache’s Dispatcher rewrite rules:</p>
<ul>
<li><strong>Better Coordination with Dispatcher Rules</strong>: With redirect processing fully managed at the Dispatcher, Redirect Map Manager rules are less likely to conflict with existing rewrite rules, eliminating the need to pass through complex Dispatcher configurations to reach the publisher.</li>
<li><strong>Reduced Complexity</strong>: Redirect Map Manager’s edge-based handling simplifies redirect rule management, enabling more consistent behavior and reducing the need for Dispatcher-publisher coordination.</li>
</ul>
<h3>3. Greater Flexibility for Business Users</h3>
<p>This update provides a more accessible and flexible redirection setup for business users who need to control redirects but may lack access to development pipelines:</p>
<ul>
<li><strong>User-Friendly Management Interface</strong>: ACS Commons Redirect Map Manager offers an intuitive interface within AEM for managing redirects. Business users can easily create, edit, and organize large numbers of redirects without requiring deployments or extensive pipeline configurations.</li>
<li><strong>Scalability for Large-Scale Operations</strong>: Redirect Map Manager supports thousands of redirects directly within AEM, making it ideal for business-driven redirect management at scale.</li>
</ul>
<hr class="spacer-large"/>
<h2 id="how_to_configure_pipeline_free_url_redirects_with_redirect_map_manager">How to Configure Pipeline-Free URL Redirects with Redirect Map Manager</h2>
<p>Setting up pipeline-free redirects with the ACS Commons Redirect Map Manager in AEMaaCS is straightforward:</p>
<ol>
<li><strong>Define Redirect Maps</strong>: In the <span class="code-highlight-secondary">managed-rewrite-maps.yaml</span> file, specify paths to redirect files stored in the publish repository.</li>
<li><strong>Manage Redirects in Redirect Map Manager</strong>: Use the Redirect Map Manager’s user interface to set up and organize redirect mappings. The tool’s UI allows direct integration with Dispatcher for a streamlined process.</li>
<li><strong>Configure Apache RewriteMap</strong>:
<ul>
<li>Set up the <span class="code-highlight-secondary">RewriteMap</span> directive in Apache to ensure optimal redirect caching and performance at the Dispatcher level. Here’s a sample configuration:</li>
</ul>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;"><div>1<br />2<br />3<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">RewriteMap map.<span style="color: #006633;">foo</span> dbm<span style="color: #339933;">=</span>sdbm<span style="color: #339933;">:/</span>tmp<span style="color: #339933;">/</span>rewrites<span style="color: #339933;">/</span>my.<span style="color: #006633;">map</span><br />
RewriteCond $<span style="color: #009900;">&#123;</span>map.<span style="color: #006633;">foo</span><span style="color: #339933;">:</span>$1<span style="color: #009900;">&#125;</span> <span style="color: #339933;">!</span><span style="color: #0000ff;">&quot;&quot;</span><br />
RewriteRule <span style="color: #339933;">^</span><span style="color: #009900;">&#40;</span>.<span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>$ $<span style="color: #009900;">&#123;</span>map.<span style="color: #006633;">foo</span><span style="color: #339933;">:</span>$1<span style="color: #339933;">|/</span><span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#91;</span>L,R<span style="color: #339933;">=</span><span style="color: #cc66cc;">301</span><span style="color: #009900;">&#93;</span></div></td></tr></tbody></table></div>
</li>
</ol>
<p>For a deeper dive into this feature, visit Adobe’s full article: <a href="https://experienceleague.adobe.com/en/docs/experience-manager-cloud-service/content/implementing/content-delivery/pipeline-free-url-redirects" target="_blank" rel="noopener">Pipeline-Free URL Redirects</a>.</p>
<p>Visit the official <a href="https://adobe-consulting-services.github.io/acs-aem-commons/features/redirect-map-manager/index.html" rel="noopener" target="_blank">ACS Commons Redirect Map Manager Page</a>.</p>
<hr class="spacer-large"/>
<h2 id="conclusion">Conclusion</h2>
<p>The introduction of ACS Commons Redirect Map Manager support in AEMaaCS marks a significant improvement in URL redirection management. By handling redirects at the Dispatcher, this feature enhances performance, reduces complexity, and minimizes publisher load, all while aligning with Adobe’s best practices for AEM Cloud environments.</p>
<p>With these changes, managing large-scale redirects in AEMaaCS becomes more efficient, flexible, and scalable, making it easier for teams to maintain high performance and consistency across their AEM implementations.</p>
<p>The post <a rel="nofollow" href="https://sourcedcode.com/blog/aem/pipeline-free-url-redirects-acs-commons-redirect-map-manager-now-supported-on-aemaacs">Pipeline-Free URL Redirects &#038; ACS Commons Redirect Map Manager Now Supported on AEMaaCS</a> appeared first on <a rel="nofollow" href="https://sourcedcode.com">Sourced Code</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sourcedcode.com/blog/aem/pipeline-free-url-redirects-acs-commons-redirect-map-manager-now-supported-on-aemaacs/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AEM Dispatcher Uncacheable Requests</title>
		<link>https://sourcedcode.com/blog/aem/aem-dispatcher-uncacheable-requests</link>
					<comments>https://sourcedcode.com/blog/aem/aem-dispatcher-uncacheable-requests#respond</comments>
		
		<dc:creator><![CDATA[briankasingli]]></dc:creator>
		<pubDate>Fri, 12 Jul 2024 05:11:04 +0000</pubDate>
				<category><![CDATA[AEM]]></category>
		<category><![CDATA[Dispatcher]]></category>
		<guid isPermaLink="false">https://sourcedcode.com/?p=7169</guid>

					<description><![CDATA[<p>The AEM Dispatcher plays a crucial role in caching to optimize the performance and delivery of content in Adobe Experience Manager (AEM). However, not all requests can be cached. This blog post will outline the criteria for cacheable requests and highlight scenarios that make requests uncacheable by the Dispatcher. Quick Links 1. Cacheable Requests 2. [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://sourcedcode.com/blog/aem/aem-dispatcher-uncacheable-requests">AEM Dispatcher Uncacheable Requests</a> appeared first on <a rel="nofollow" href="https://sourcedcode.com">Sourced Code</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>The AEM Dispatcher plays a crucial role in caching to optimize the performance and delivery of content in Adobe Experience Manager (AEM). However, not all requests can be cached. This blog post will outline the criteria for cacheable requests and highlight scenarios that make requests uncacheable by the Dispatcher.</p>
<div class="mention-block">
    <strong>Quick Links</strong></p>
<ol>
<li><a href="#cacheable_requests">1. Cacheable Requests</a></li>
<li><a href="#non_cacheable_requests_or_responses">2. Non-Cacheable Requests or Responses</a></li>
<li><a href="#conclusion">3. Conclusion</a></li>
</ol>
</div>
<hr class="spacer-large"/>
<h2 id="cacheable_requests">1. Cacheable Requests</h2>
<p>The Dispatcher can cache a URL if it meets the following criteria:</p>
<ul>
<li><strong>Configured to be Cacheable:</strong> The request is explicitly configured as cacheable in the Dispatcher configuration.</li>
<li><strong>Plain GET Request:</strong> The request is a simple HTTP GET request.</li>
<li><strong>URL with Extension:</strong> The request URL must include an extension, such as <span class="code-highlight-primary">.html</span>.</li>
</ul>
<hr class="spacer-large"/>
<h2 id="non_cacheable_requests_or_responses">2. Non-Cacheable Requests or Responses</h2>
<p>There are several scenarios where requests or responses cannot be cached by the Dispatcher:</p>
<ul>
<li><strong>Denied by Configuration:</strong> Requests that are denied caching by specific configuration settings, such as paths, patterns, or MIME types.</li>
<li><strong>Special Headers:</strong>
<ul>
<li>Responses that include a &#8220;Dispatcher: no-cache&#8221; header.</li>
<li>Responses that include a &#8220;Cache-Control: no-cache&#8221; or &#8220;Cache-Control: private&#8221; header.</li>
<li>Responses that include a &#8220;Pragma: no-cache&#8221; header.</li>
</ul>
</li>
<li><strong>Request with Query Parameters:</strong> Any request that contains query parameters.</li>
<li><strong>URL Without Extension:</strong> URLs that do not have an extension cannot be cached.</li>
<li><strong>URL with Suffix Without Extension:</strong> URLs that have a suffix lacking an extension.</li>
<li><strong>Non-200 Status Code:</strong> Responses that return a status code other than 200.</li>
<li><strong>POST Requests:</strong> HTTP POST requests cannot be cached as they typically involve changes to the server state.</li>
</ul>
<hr class="spacer-large"/>
<h2 id="conclusion">3. Conclusion</h2>
<p>Understanding which requests and responses are cacheable is crucial for optimizing the performance of your AEM instance. By ensuring that only appropriate content is cached and by configuring your Dispatcher settings correctly, you can improve both the speed and reliability of your website. Keep these rules in mind to ensure effective caching with AEM Dispatcher.</p>
<p>The post <a rel="nofollow" href="https://sourcedcode.com/blog/aem/aem-dispatcher-uncacheable-requests">AEM Dispatcher Uncacheable Requests</a> appeared first on <a rel="nofollow" href="https://sourcedcode.com">Sourced Code</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sourcedcode.com/blog/aem/aem-dispatcher-uncacheable-requests/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Caching AEM Pages with Extensionless (.html)</title>
		<link>https://sourcedcode.com/blog/aem/caching-aem-pages-with-extensionless-html</link>
					<comments>https://sourcedcode.com/blog/aem/caching-aem-pages-with-extensionless-html#respond</comments>
		
		<dc:creator><![CDATA[briankasingli]]></dc:creator>
		<pubDate>Tue, 09 Jul 2024 17:01:59 +0000</pubDate>
				<category><![CDATA[AEM]]></category>
		<category><![CDATA[Dispatcher]]></category>
		<guid isPermaLink="false">https://sourcedcode.com/?p=7164</guid>

					<description><![CDATA[<p>One of the key aspects of optimizing your Adobe Experience Manager (AEM) implementation is effective caching, particularly through the AEM Dispatcher. However, not all URLs are created equal when it comes to caching. In this article, we will explore why URLs without extensions are not cached, the restrictions involved, and how to use Apache rules [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://sourcedcode.com/blog/aem/caching-aem-pages-with-extensionless-html">Caching AEM Pages with Extensionless (.html)</a> appeared first on <a rel="nofollow" href="https://sourcedcode.com">Sourced Code</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>One of the key aspects of optimizing your Adobe Experience Manager (AEM) implementation is effective caching, particularly through the AEM Dispatcher. However, not all URLs are created equal when it comes to caching. In this article, we will explore why URLs without extensions are not cached, the restrictions involved, and how to use Apache rules as a fallback with the <span class="code-highlight-primary">[PT]</span> (Pass Through) flag.</p>
<div class="mention-block">
    <strong>Quick Links</strong></p>
<ol>
<li><a href="#urls_without_extensions_are_not_cached">URLs Without Extensions Are Not Cached</a></li>
<li><a href="#examples">Examples</a></li>
<li><a href="#using_apache_pt_pass_through_as_a_fallback">Using Apache [PT] Pass Through as a Fallback</a></li>
<li><a href="#additional_examples">Additional Examples</a></li>
<li><a href="#conclusion">Conclusion</a></li>
</ol>
</div>
<hr class="spacer-large"/>
<h2 id="urls_without_extensions_are_not_cached">1. URLs Without Extensions Are Not Cached</h2>
<p>In AEM, URLs must always have an extension to be cacheable by the Dispatcher. While you can serve URLs without extensions in AEM, these URLs will not be cached by the Dispatcher, leading to potential performance issues.</p>
<hr class="spacer-large"/>
<h2 id="examples">2. Examples</h2>
<p><strong>Cacheable URL:</strong></p>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;"><div>1<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//domain.com/home.html</span></div></td></tr></tbody></table></div>
<p>This URL includes an extension (<span class="code-highlight-primary">.html</span>) and is therefore cacheable by the Dispatcher.</p>
<p><strong>Non-cacheable URL:</strong></p>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;"><div>1<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//domain.com/home</span></div></td></tr></tbody></table></div>
<p>This URL lacks an extension and will not be cached by the Dispatcher. However, if you use the <span class="code-highlight-primary">[PT]</span> pass through to internal AEM resource ending with <span class="code-highlight-primary">.html</span>, it will be cached.</p>
<hr class="spacer-large"/>
<h2 id="using_apache_pt_pass_through_as_a_fallback">3. Using Apache [PT] Pass Through as a Fallback</h2>
<p>To handle URLs without extensions and ensure they are still processed correctly, you can use Apache&#8217;s <span class="code-highlight-primary">[PT]</span> (Pass Through) flag. This allows the URL to be passed through to the backend server, appending <span class="code-highlight-primary">.html</span> to the request, thereby enabling it to be cached by the Dispatcher.</p>
<h3>Example Apache Configuration</h3>
<p>Consider the following common dispatcher configuration to handle extensionless URLs:</p>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">RewriteEngine On<br />
RewriteCond <span style="color: #339933;">%</span><span style="color: #009900;">&#123;</span>REQUEST_URI<span style="color: #009900;">&#125;</span> <span style="color: #339933;">!^/</span>apps<br />
RewriteCond <span style="color: #339933;">%</span><span style="color: #009900;">&#123;</span>REQUEST_URI<span style="color: #009900;">&#125;</span> <span style="color: #339933;">!^/</span>bin<br />
RewriteCond <span style="color: #339933;">%</span><span style="color: #009900;">&#123;</span>REQUEST_URI<span style="color: #009900;">&#125;</span> <span style="color: #339933;">!^/</span>content<br />
RewriteCond <span style="color: #339933;">%</span><span style="color: #009900;">&#123;</span>REQUEST_URI<span style="color: #009900;">&#125;</span> <span style="color: #339933;">!^/</span>etc<br />
RewriteCond <span style="color: #339933;">%</span><span style="color: #009900;">&#123;</span>REQUEST_URI<span style="color: #009900;">&#125;</span> <span style="color: #339933;">!^/</span>home<br />
RewriteCond <span style="color: #339933;">%</span><span style="color: #009900;">&#123;</span>REQUEST_URI<span style="color: #009900;">&#125;</span> <span style="color: #339933;">!^/</span>libs<br />
RewriteCond <span style="color: #339933;">%</span><span style="color: #009900;">&#123;</span>REQUEST_URI<span style="color: #009900;">&#125;</span> <span style="color: #339933;">!^/</span>saml_login<br />
RewriteCond <span style="color: #339933;">%</span><span style="color: #009900;">&#123;</span>REQUEST_URI<span style="color: #009900;">&#125;</span> <span style="color: #339933;">!^/</span>system<br />
RewriteCond <span style="color: #339933;">%</span><span style="color: #009900;">&#123;</span>REQUEST_URI<span style="color: #009900;">&#125;</span> <span style="color: #339933;">!^/</span>tmp<br />
RewriteCond <span style="color: #339933;">%</span><span style="color: #009900;">&#123;</span>REQUEST_URI<span style="color: #009900;">&#125;</span> <span style="color: #339933;">!^/</span>var<br />
RewriteCond <span style="color: #339933;">%</span><span style="color: #009900;">&#123;</span>REQUEST_URI<span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#40;</span>.<span style="color: #006633;">html</span><span style="color: #339933;">|</span>.<span style="color: #006633;">jpe</span><span style="color: #339933;">?</span>g<span style="color: #339933;">|</span>.<span style="color: #006633;">png</span><span style="color: #339933;">|</span>.<span style="color: #006633;">svg</span><span style="color: #009900;">&#41;</span>$<br />
RewriteRule <span style="color: #339933;">^/</span><span style="color: #009900;">&#40;</span>.<span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>$ <span style="color: #339933;">/</span>content<span style="color: #339933;">/</span>$<span style="color: #009900;">&#123;</span>CONTENT_FOLDER_NAME<span style="color: #009900;">&#125;</span><span style="color: #339933;">/</span>$1 <span style="color: #009900;">&#91;</span>PT,L<span style="color: #009900;">&#93;</span></div></td></tr></tbody></table></div>
<p>With this configuration, when a domain like <span class="code-highlight-primary">http://domain.com/en/home</span> is hit, it will actually map to:</p>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;"><div>1<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #339933;">/</span>content<span style="color: #339933;">/</span>$<span style="color: #009900;">&#123;</span>CONTENT_FOLDER_NAME<span style="color: #009900;">&#125;</span><span style="color: #339933;">/</span>en<span style="color: #339933;">/</span>home.<span style="color: #006633;">html</span></div></td></tr></tbody></table></div>
<p>For example, if <span class="code-highlight-primary">${CONTENT_FOLDER_NAME}</span> is <span class="code-highlight-primary">wknd</span>, the URL <span class="code-highlight-primary">http://domain.com/en/home</span> would map to:</p>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;"><div>1<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #339933;">/</span>content<span style="color: #339933;">/</span>wknd<span style="color: #339933;">/</span>en<span style="color: #339933;">/</span>home.<span style="color: #006633;">html</span></div></td></tr></tbody></table></div>
<p>This allows the Dispatcher to cache the resource correctly.</p>
<hr class="spacer-large"/>
<h2 id="additional_examples">4. Additional Examples</h2>
<p><strong>Original URL:</strong></p>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;"><div>1<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//domain.com/en/home</span></div></td></tr></tbody></table></div>
<p><strong>Rewritten URL with [PT]:</strong></p>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;"><div>1<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #339933;">/</span>content<span style="color: #339933;">/</span>wknd<span style="color: #339933;">/</span>en<span style="color: #339933;">/</span>home.<span style="color: #006633;">html</span></div></td></tr></tbody></table></div>
<p><strong>Original URL:</strong></p>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;"><div>1<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//domain.com/about</span></div></td></tr></tbody></table></div>
<p><strong>Rewritten URL with [PT]:</strong></p>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;"><div>1<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #339933;">/</span>content<span style="color: #339933;">/</span>wknd<span style="color: #339933;">/</span>about.<span style="color: #006633;">html</span></div></td></tr></tbody></table></div>
<p>In both examples, the extensionless URLs are mapped to URLs ending in <span class="code-highlight-primary">.html</span>, making them cacheable by the Dispatcher.</p>
<hr class="spacer-large"/>
<h2 id="conclusion">5. Conclusion</h2>
<p>To ensure your pages are cached by the Dispatcher, always add extensions to your URLs. Some may argue that having extensions in URLs could negatively affect SEO rankings. However, an uncached page can lead to slow loading times, which can hurt your SEO rankings even more.</p>
<p>By following these guidelines and using Apache <span class="code-highlight-primary">[PT]</span> rules as a fallback, you can optimize your AEM Dispatcher caching strategy and improve the performance and reliability of your AEM instance.</p>
<p>The post <a rel="nofollow" href="https://sourcedcode.com/blog/aem/caching-aem-pages-with-extensionless-html">Caching AEM Pages with Extensionless (.html)</a> appeared first on <a rel="nofollow" href="https://sourcedcode.com">Sourced Code</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sourcedcode.com/blog/aem/caching-aem-pages-with-extensionless-html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>error: immutable file &#8216;conf.d/dispatcher_vhost.conf&#8217; has been changed!</title>
		<link>https://sourcedcode.com/blog/aem/error-immutable-file-conf-d-dispatcher_vhost-conf-has-been-changed</link>
					<comments>https://sourcedcode.com/blog/aem/error-immutable-file-conf-d-dispatcher_vhost-conf-has-been-changed#respond</comments>
		
		<dc:creator><![CDATA[briankasingli]]></dc:creator>
		<pubDate>Fri, 27 Jan 2023 00:56:25 +0000</pubDate>
				<category><![CDATA[AEM]]></category>
		<category><![CDATA[Dispatcher]]></category>
		<guid isPermaLink="false">https://sourcedcode.com/?p=4212</guid>

					<description><![CDATA[<p>While setting up Adobe Experience Manager (AEM) as a Cloud Service&#8217;s dispatcher SDK on my local Mac machine, following this Adobe documentation, I encountered an error while running the command &#8220;./bin/validate.sh src&#8221;. The error message read &#8220;error: immutable file &#8216;conf.d/dispatcher_vhost.conf&#8217; has been changed!&#8221;. After some research, I found that the issue was related to the [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://sourcedcode.com/blog/aem/error-immutable-file-conf-d-dispatcher_vhost-conf-has-been-changed">error: immutable file &#8216;conf.d/dispatcher_vhost.conf&#8217; has been changed!</a> appeared first on <a rel="nofollow" href="https://sourcedcode.com">Sourced Code</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>While setting up Adobe Experience Manager (AEM) as a Cloud Service&#8217;s dispatcher SDK on my local Mac machine, <a href="https://experienceleague.adobe.com/docs/experience-manager-learn/cloud-service/local-development-environment-set-up/dispatcher-tools.html" rel="noopener" target="_blank">following this Adobe documentation</a>, I encountered an error while running the command &#8220;./bin/validate.sh src&#8221;. The error message read &#8220;error: immutable file &#8216;conf.d/dispatcher_vhost.conf&#8217; has been changed!&#8221;.</p>
<p>After some research, I found that the issue was related to the access permissions of the file in question. To resolve the problem, I ran the command &#8220;chmod 777 conf.d/dispatcher_vhost.conf&#8221; on my Mac machine. This successfully allowed me to proceed with my local AEM setup.</p>
<hr class="spacer-large"/>
<h3>But what exactly is &#8220;chmod 777&#8221;?</h3>
<p>In Linux and Unix-based operating systems, &#8220;chmod&#8221; stands for &#8220;change mode&#8221; and is used to adjust the read, write, and execute permissions of a file or directory. The number &#8220;777&#8221; is a three-digit code called the &#8220;file mode&#8221; or &#8220;permission mode&#8221;. It represents the permissions for the owner of the file, the group the file belongs to, and all other users.</p>
<p>Here are the details about the 777 permission:</p>
<p>7 is the permission for owner<br />
7 is the permission for group<br />
7 is the permission for others (users)<br />
Each digit in the file mode is a sum of the values for the read (4), write (2), and execute (1) permissions. So, 777 means that the owner, the group, and other users all have full read, write, and execute permissions for the file or directory.</p>
<p>It&#8217;s important to note that chmod 777 is considered a very open permission, and is not recommended from a security standpoint. It&#8217;s generally better to use more restrictive permissions such as 644 for files and 755 for directories, which will still allow the owner to read and write to the file, but prevent others from making any changes. However, for local testing purposes, chmod 777 can be used.</p>
<p>The post <a rel="nofollow" href="https://sourcedcode.com/blog/aem/error-immutable-file-conf-d-dispatcher_vhost-conf-has-been-changed">error: immutable file &#8216;conf.d/dispatcher_vhost.conf&#8217; has been changed!</a> appeared first on <a rel="nofollow" href="https://sourcedcode.com">Sourced Code</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sourcedcode.com/blog/aem/error-immutable-file-conf-d-dispatcher_vhost-conf-has-been-changed/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Setup the AEM Dispatcher Flush Agent?</title>
		<link>https://sourcedcode.com/blog/aem/how-to-setup-the-aem-dispatcher-flush-agent</link>
					<comments>https://sourcedcode.com/blog/aem/how-to-setup-the-aem-dispatcher-flush-agent#comments</comments>
		
		<dc:creator><![CDATA[briankasingli]]></dc:creator>
		<pubDate>Fri, 09 Apr 2021 20:24:04 +0000</pubDate>
				<category><![CDATA[AEM]]></category>
		<category><![CDATA[Dispatcher]]></category>
		<guid isPermaLink="false">https://sourcedcode.com/?p=2594</guid>

					<description><![CDATA[<p>Before setting up the dispatcher flush agent on your AEM publish instance, we must make available the /dispatcher/invalidate.cache URI. Where is exactly the /dispatcher/invalidate.cache endpoint coming from? In this article we will answer how is the /dispatcher/invalidate.cache generated, how do we securely allow only specific IP addresses to make a flush cache request, and how [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://sourcedcode.com/blog/aem/how-to-setup-the-aem-dispatcher-flush-agent">How to Setup the AEM Dispatcher Flush Agent?</a> appeared first on <a rel="nofollow" href="https://sourcedcode.com">Sourced Code</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Before setting up the dispatcher flush agent on your AEM publish instance, we must make available the /dispatcher/invalidate.cache URI. Where is exactly the /dispatcher/invalidate.cache endpoint coming from? In this article we will answer how is the /dispatcher/invalidate.cache generated, how do we securely allow only specific IP addresses to make a flush cache request, and how to configure a basic dispatcher flush agent on the publish agent.</p>
<p>This article is written while I had my development environment running, where the AEM publish server and dispatcher apache server are on the same system, similar setup to <a href="https://helpx.adobe.com/experience-manager/kt/platform-repository/using/dispatcher-macos-technical-video-setup.html" target="_blank" rel="noopener">here</a>. However, the understanding here will be valid for external servers setup.</p>
<div class="mention-block">Quick Links</p>
<ol>
<li><a href="#how-is-endpoint-generated">How is the /dispatcher/invalidate.cache generated?</a></li>
<li><a href="#how-is-dispatcher-security-handled">How do we securely allow only specific IP addresses to make a flush cache request?</a></li>
<li><a href="#how-to-setup-dispatcher-on-publish">How to configure a basic dispatcher flush agent on the AEM publish?</a></li>
<li><a href="#last-words">Last words</a></li>
</ol>
</div>
<hr class="spacer-large" />
<h3 id="how-is-endpoint-generated">1. How is the /dispatcher/invalidate.cache generated?</h3>
<p>There&#8217;s no magic behind the /dispatcher/invalidate.cache endpoint. This endpoint is actually created by the <a href="https://experienceleague.adobe.com/docs/experience-manager-dispatcher/using/getting-started/release-notes.html?lang=en#helpful-resources" target="_blank" rel="noopener">AEM Dispatcher Module</a>. When the Dispatcher Module is enabled on your web server&#8217;s VirtualHost the endpoint will be available. However, not anyone can be calling this endpoint where in the next section we will go through how to set up permissions for the this.</p>
<p><strong>Example</strong></p>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">ServerName weretail.<span style="color: #006633;">com</span><br />
ServerAlias www.<span style="color: #006633;">weretail</span>.<span style="color: #006633;">com</span><br />
DocumentRoot <span style="color: #0000ff;">&quot;${docRootPath}/aem_sites&quot;</span><br />
<span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span>Directory <span style="color: #0000ff;">&quot;${docRootPath}/aem_sites&quot;</span><span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span><br />
Options <span style="color: #339933;">-</span>Indexes <span style="color: #339933;">+</span>FollowSymLinks <span style="color: #339933;">-</span>MultiViews<br />
AllowOverride None<br />
Require all granted<br />
# enabling the AEM Dispatcher Module<br />
<br />
SetHandler dispatcher<span style="color: #339933;">-</span>handler<br />
ModMimeUsePathInfo On</div></td></tr></tbody></table></div>
<hr class="spacer-large" />
<h3 id="how-is-dispatcher-security-handled">2. How do we securely allow only specific IP addresses to make a flush cache request?</h3>
<p>With a fresh installation of the dispatcher, utilising the dispatcher.any template, there will be a section called allowedClients (all configuration have been commented out in the default configs). The <span class="code-highlight-primary">/allowedClients</span> property defines specific clients that are allowed to flush the cache; globbing patterns are matched against the IP.</p>
<p>When the setup is complete, you are now able to make calls to the /dispatcher/invalidate.cache endpoint, for example, http://localhost:80/dispatcher/invalidate.cache. When configuring the Web Server on an external server, making sure that the AEM publish server is whitelisted from the dispatcher server, and the dispatcher.any file from the /allowedClients property is configured.</p>
<p><strong>Example</strong><br />
As an example, we can configure the values here with localhost &amp; 127.0.0.1.</p>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"># The allowedClients section restricts the client IP addresses that are<br />
# allowed to issue activation requests.<br />
<span style="color: #339933;">/</span>allowedClients<br />
<span style="color: #009900;">&#123;</span><br />
# deny all clients<br />
<span style="color: #339933;">/</span>0000 <span style="color: #009900;">&#123;</span> <span style="color: #339933;">/</span>glob <span style="color: #0000ff;">&quot;*&quot;</span> <span style="color: #339933;">/</span>type <span style="color: #0000ff;">&quot;deny&quot;</span> <span style="color: #009900;">&#125;</span><br />
# allow local host connection<br />
<span style="color: #339933;">/</span>0001 <span style="color: #009900;">&#123;</span> <span style="color: #339933;">/</span>glob <span style="color: #0000ff;">&quot;127.0.0.1&quot;</span> <span style="color: #339933;">/</span>type <span style="color: #0000ff;">&quot;allow&quot;</span> <span style="color: #009900;">&#125;</span><br />
<span style="color: #339933;">/</span>0002 <span style="color: #009900;">&#123;</span> <span style="color: #339933;">/</span>glob <span style="color: #0000ff;">&quot;localhost&quot;</span> <span style="color: #339933;">/</span>type <span style="color: #0000ff;">&quot;allow&quot;</span> <span style="color: #009900;">&#125;</span><br />
# allow example some AEM publish server<br />
<span style="color: #339933;">/</span>0003 <span style="color: #009900;">&#123;</span> <span style="color: #339933;">/</span>glob <span style="color: #0000ff;">&quot;192.168.3.9&quot;</span> <span style="color: #339933;">/</span>type <span style="color: #0000ff;">&quot;allow&quot;</span> <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- Horizontal Preview Ad --><br />
<ins class="adsbygoogle" style="display: block;" data-ad-client="ca-pub-9053803095882933" data-ad-slot="8658919803" data-ad-format="auto" data-full-width-responsive="true"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>
<hr class="spacer-large" />
<h3 id="how-to-setup-dispatcher-on-publish">3. How to configure a basic dispatcher flush agent on the AEM publish?</h3>
<p>After when steps 1 &amp; 2 from above is completed, we can go straight to our replication agents to publish to configure the dispatcher flush agent. It would be as simple as these simple steps below:<br />
<a href="https://sourcedcode.com/wp-content/uploads/2021/01/aem-publish-replication-agent-flush-configuration.png"><img decoding="async" class="alignnone size-medium wp-image-2624" src="https://sourcedcode.com/wp-content/uploads/2021/01/aem-publish-replication-agent-flush-configuration-300x174.png" alt="Dispatcher configuration dialogue with the valid URI in the configuration" width="300" height="174" srcset="https://sourcedcode.com/wp-content/uploads/2021/01/aem-publish-replication-agent-flush-configuration-300x174.png 300w, https://sourcedcode.com/wp-content/uploads/2021/01/aem-publish-replication-agent-flush-configuration-768x446.png 768w, https://sourcedcode.com/wp-content/uploads/2021/01/aem-publish-replication-agent-flush-configuration-600x348.png 600w, https://sourcedcode.com/wp-content/uploads/2021/01/aem-publish-replication-agent-flush-configuration.png 905w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<ol>
<li>Visit the configuration page http://localhost:4503/etc/replication/agents.publish/flush.html.</li>
<li>Insert your valid URI in the configuration. (in my case, I will use http://localhost:80/dispatcher/invalidate.cache)</li>
<li>Test the connection to get a connection success status.</li>
<li>Enable the flush agent.</li>
<li>We are done.</li>
<li>Go ahead and activate a page from author to test this out.</li>
</ol>
<p>When you activate a page from the author environment, your Web Server logs should show something like this :</p>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #009900;">&#91;</span>Sat Jan 09 <span style="color: #cc66cc;">21</span><span style="color: #339933;">:</span>07<span style="color: #339933;">:</span><span style="color: #cc66cc;">19</span> <span style="color: #cc66cc;">2021</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#91;</span>D<span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#91;</span>pid <span style="color: #cc66cc;">8</span><span style="color: #339933;">:</span>tid <span style="color: #cc66cc;">139698416600832</span><span style="color: #009900;">&#93;</span> Found farm sites <span style="color: #000000; font-weight: bold;">for</span> localhost<br />
<span style="color: #009900;">&#91;</span>Sat Jan 09 <span style="color: #cc66cc;">21</span><span style="color: #339933;">:</span>07<span style="color: #339933;">:</span><span style="color: #cc66cc;">19</span> <span style="color: #cc66cc;">2021</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#91;</span>D<span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#91;</span>pid <span style="color: #cc66cc;">8</span><span style="color: #339933;">:</span>tid <span style="color: #cc66cc;">139698416600832</span><span style="color: #009900;">&#93;</span> checking <span style="color: #009900;">&#91;</span><span style="color: #339933;">/</span>dispatcher<span style="color: #339933;">/</span>invalidate.<span style="color: #006633;">cache</span><span style="color: #009900;">&#93;</span><br />
<span style="color: #009900;">&#91;</span>Sat Jan 09 <span style="color: #cc66cc;">21</span><span style="color: #339933;">:</span>07<span style="color: #339933;">:</span><span style="color: #cc66cc;">19</span> <span style="color: #cc66cc;">2021</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#91;</span>I<span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#91;</span>pid <span style="color: #cc66cc;">8</span><span style="color: #339933;">:</span>tid <span style="color: #cc66cc;">139698416600832</span><span style="color: #009900;">&#93;</span> Activation detected<span style="color: #339933;">:</span> action<span style="color: #339933;">=</span>Activate <span style="color: #009900;">&#91;</span><span style="color: #339933;">/</span>content<span style="color: #339933;">/</span>we<span style="color: #339933;">-</span>retail<span style="color: #339933;">/</span>us<span style="color: #339933;">/</span>en<span style="color: #009900;">&#93;</span><br />
<span style="color: #009900;">&#91;</span>Sat Jan 09 <span style="color: #cc66cc;">21</span><span style="color: #339933;">:</span>07<span style="color: #339933;">:</span><span style="color: #cc66cc;">19</span> <span style="color: #cc66cc;">2021</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#91;</span>I<span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#91;</span>pid <span style="color: #cc66cc;">8</span><span style="color: #339933;">:</span>tid <span style="color: #cc66cc;">139698416600832</span><span style="color: #009900;">&#93;</span> Touched <span style="color: #339933;">/</span>etc<span style="color: #339933;">/</span>httpd<span style="color: #339933;">/</span>httpd_www<span style="color: #339933;">/</span>aem_sites<span style="color: #339933;">/</span>.<span style="color: #006633;">stat</span><br />
<span style="color: #009900;">&#91;</span>Sat Jan 09 <span style="color: #cc66cc;">21</span><span style="color: #339933;">:</span>07<span style="color: #339933;">:</span><span style="color: #cc66cc;">19</span> <span style="color: #cc66cc;">2021</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#91;</span>D<span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#91;</span>pid <span style="color: #cc66cc;">8</span><span style="color: #339933;">:</span>tid <span style="color: #cc66cc;">139698416600832</span><span style="color: #009900;">&#93;</span> response.<span style="color: #006633;">status</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">200</span><br />
<span style="color: #009900;">&#91;</span>Sat Jan 09 <span style="color: #cc66cc;">21</span><span style="color: #339933;">:</span>07<span style="color: #339933;">:</span><span style="color: #cc66cc;">19</span> <span style="color: #cc66cc;">2021</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#91;</span>D<span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#91;</span>pid <span style="color: #cc66cc;">8</span><span style="color: #339933;">:</span>tid <span style="color: #cc66cc;">139698416600832</span><span style="color: #009900;">&#93;</span> response.<span style="color: #006633;">headers</span><span style="color: #009900;">&#91;</span>Server<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;Communique/2.6.3 (build 5221)&quot;</span><br />
<span style="color: #009900;">&#91;</span>Sat Jan 09 <span style="color: #cc66cc;">21</span><span style="color: #339933;">:</span>07<span style="color: #339933;">:</span><span style="color: #cc66cc;">19</span> <span style="color: #cc66cc;">2021</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#91;</span>D<span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#91;</span>pid <span style="color: #cc66cc;">8</span><span style="color: #339933;">:</span>tid <span style="color: #cc66cc;">139698416600832</span><span style="color: #009900;">&#93;</span> response.<span style="color: #006633;">headers</span><span style="color: #009900;">&#91;</span>Content<span style="color: #339933;">-</span>Type<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;text/html&quot;</span><br />
<span style="color: #009900;">&#91;</span>Sat Jan 09 <span style="color: #cc66cc;">21</span><span style="color: #339933;">:</span>07<span style="color: #339933;">:</span><span style="color: #cc66cc;">19</span> <span style="color: #cc66cc;">2021</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#91;</span>D<span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#91;</span>pid <span style="color: #cc66cc;">8</span><span style="color: #339933;">:</span>tid <span style="color: #cc66cc;">139698416600832</span><span style="color: #009900;">&#93;</span> cache flushed<br />
<span style="color: #009900;">&#91;</span>Sat Jan 09 <span style="color: #cc66cc;">21</span><span style="color: #339933;">:</span>07<span style="color: #339933;">:</span><span style="color: #cc66cc;">19</span> <span style="color: #cc66cc;">2021</span><span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#91;</span>I<span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#91;</span>pid <span style="color: #cc66cc;">8</span><span style="color: #339933;">:</span>tid <span style="color: #cc66cc;">139698416600832</span><span style="color: #009900;">&#93;</span> <span style="color: #0000ff;">&quot;GET /dispatcher/invalidate.cache&quot;</span> <span style="color: #cc66cc;">200</span> purge <span style="color: #009900;">&#91;</span>sites<span style="color: #339933;">/-</span><span style="color: #009900;">&#93;</span> 7ms</div></td></tr></tbody></table></div>
<hr class="spacer-large" />
<h3 id="last-words">Last Notes</h3>
<p>Lastly, I just wanted to say that it is best practice to set up the dispatch flush agent on the publish server, as this will eliminate content race conditions; where the content has been successfully replicated to the publish instance, then a content flush is fulfilled.</p>
<p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- Horizontal Preview Ad #3 --><br />
<ins class="adsbygoogle" style="display: block;" data-ad-client="ca-pub-9053803095882933" data-ad-slot="3385248102" data-ad-format="auto" data-full-width-responsive="true"></ins><br />
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></p>
<p>The post <a rel="nofollow" href="https://sourcedcode.com/blog/aem/how-to-setup-the-aem-dispatcher-flush-agent">How to Setup the AEM Dispatcher Flush Agent?</a> appeared first on <a rel="nofollow" href="https://sourcedcode.com">Sourced Code</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sourcedcode.com/blog/aem/how-to-setup-the-aem-dispatcher-flush-agent/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
