{"id":391781,"date":"2026-11-05T11:03:27","date_gmt":"2026-11-05T11:03:27","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/velocity-cache\/"},"modified":"2026-11-07T08:10:59","modified_gmt":"2026-11-07T08:10:59","slug":"cache-shark","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/cache-shark\/","author":23585822,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.2.0","stable_tag":"trunk","tested":"7.1.4","requires":"6.9","requires_php":"7.4","requires_plugins":null,"header_name":"Cache Shark","header_author":"Md Rabiul","header_description":"Make your site fast with free, no-nonsense page caching. Cache Shark saves a static copy of each public page and serves it before WordPress, your theme and your plugins even load. It clears only the pages that changed when you publish or update content, warms the cache in the background from your sitemap, cleans up expired files and adds GZIP and browser-caching rules on Apache and LiteSpeed. Safe by default, with nothing to configure.","assets_banners_color":"0c566e","last_updated":"2026-11-07 08:10:59","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/github.com\/rabiul3000","rating":0,"author_block_rating":0,"active_installs":0,"downloads":376,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.0":{"tag":"0.1.0","author":"mdraabiul","date":"2026-11-05 11:19:17","revision":3785808}},"upgrade_notice":{"0.2.0":"<p>Adds optional lazy loading. Nothing changes until you turn it on.<\/p>","0.1.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3785864,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3785864,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3785864,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3785864,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[146,3853,247,11676,794],"plugin_category":[52,54],"plugin_contributors":[290866],"plugin_business_model":[],"class_list":["post-391781","plugin","type-plugin","status-publish","hentry","plugin_tags-cache","plugin_tags-page-cache","plugin_tags-performance","plugin_tags-preload","plugin_tags-speed","plugin_category-performance","plugin_category-security-and-spam-protection","plugin_contributors-mdraabiul","plugin_committers-mdraabiul"],"banners":{"banner":"https:\/\/ps.w.org\/cache-shark\/assets\/banner-772x250.png?rev=3785864","banner_2x":"https:\/\/ps.w.org\/cache-shark\/assets\/banner-1544x500.png?rev=3785864","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/cache-shark\/assets\/icon-128x128.png?rev=3785864","icon_2x":"https:\/\/ps.w.org\/cache-shark\/assets\/icon-256x256.png?rev=3785864","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Cache Shark saves a static copy of each public page and serves it to visitors before WordPress, your theme and your plugins have to run. Pages load faster and your server does less work.<\/p>\n\n<p><strong>What it does<\/strong><\/p>\n\n<ul>\n<li><strong>Page caching.<\/strong> Visitors get a saved copy of the page, served by a lightweight drop-in that loads before WordPress.<\/li>\n<li><strong>Automatic cache clearing.<\/strong> When you publish, update, trash or comment on a post, only the affected pages are cleared: the post, the home page, its categories, tags, author page and date archives. Changing your theme, menus, widgets or permalinks clears everything.<\/li>\n<li><strong>Preloading.<\/strong> After the cache is cleared, pages are warmed in the background from your sitemap, a few at a time, so visitors rarely hit an uncached page.<\/li>\n<li><strong>GZIP compression and browser caching<\/strong> rules for Apache and LiteSpeed servers.<\/li>\n<li><strong>Expired page cleanup<\/strong> keeps the cache folder from growing forever.<\/li>\n<li><strong>Lazy loading<\/strong> for images and embedded videos or maps, so offscreen media loads only when a visitor scrolls near it. Off by default; the first images on each page are never delayed.<\/li>\n<\/ul>\n\n<p><strong>Safe by default<\/strong><\/p>\n\n<p>Pages are never cached for logged-in users, commenters, password-protected posts, search results, 404 pages, feeds, the REST API, AJAX requests, or any request with a query string (marketing parameters such as utm_source are ignored). WooCommerce cart, checkout and account pages are never cached, and visitors with items in their cart are always served live pages. You can add your own excluded URLs and cookies.<\/p>\n\n<p><strong>Not included yet<\/strong><\/p>\n\n<p>CSS and JavaScript minification, delayed JavaScript, critical CSS, CDN and database cleanup are planned for later releases. Multisite network activation is not supported yet.<\/p>\n\n<p><strong>Privacy<\/strong><\/p>\n\n<p>Cache Shark does not collect data, does not use cookies and does not contact any external service. Preloading only requests pages from your own site.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>cache-shark<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the plugin from the Plugins screen.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Open <strong>Settings &gt; Cache Shark<\/strong> and check that the status table shows \"Yes\" for every row.<\/li>\n<\/ol>\n\n<p>If <code>wp-config.php<\/code> is not writable, the plugin shows the one line to add yourself: <code>define( 'WP_CACHE', true );<\/code><\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20know%20it%20is%20working%3F\"><h3>How do I know it is working?<\/h3><\/dt>\n<dd><p>Load a page twice while logged out and look at the response headers. The first request shows <code>X-Cache-Shark: MISS<\/code> and the second shows <code>X-Cache-Shark: HIT<\/code>. You can also view the page source: cached pages end with an HTML comment saying when they were cached.<\/p><\/dd>\n<dt id=\"can%20i%20use%20it%20with%20another%20caching%20plugin%3F\"><h3>Can I use it with another caching plugin?<\/h3><\/dt>\n<dd><p>No. Two page caching plugins both want <code>wp-content\/advanced-cache.php<\/code>. If another plugin already owns that file, Cache Shark does not overwrite it and shows a warning. Deactivate the other plugin first.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20woocommerce%3F\"><h3>Does it work with WooCommerce?<\/h3><\/dt>\n<dd><p>Cart, checkout and account pages are excluded from the cache by design, and visitors with items in their cart always get live pages. If you use WooCommerce, test your checkout after activating, and add any custom shop pages to the \"Never cache these URLs\" setting.<\/p><\/dd>\n<dt id=\"why%20is%20the%20cache%20lifespan%20only%2010%20hours%20by%20default%3F\"><h3>Why is the cache lifespan only 10 hours by default?<\/h3><\/dt>\n<dd><p>WordPress security tokens (nonces) expire after 12 to 24 hours, and a cached page can contain one. Keeping the lifespan under 12 hours prevents \"link expired\" errors.<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20nginx%3F\"><h3>Does it work on Nginx?<\/h3><\/dt>\n<dd><p>Page caching works on any server. The GZIP and browser caching rules are added to <code>.htaccess<\/code>, so they apply to Apache and LiteSpeed only. On Nginx, add equivalent rules to your server configuration.<\/p><\/dd>\n<dt id=\"preloading%20is%20slow%20or%20not%20running.\"><h3>Preloading is slow or not running.<\/h3><\/dt>\n<dd><p>Preloading uses WP-Cron, which only runs when someone visits your site. On quiet sites, or if <code>DISABLE_WP_CRON<\/code> is set, add a server cron job that requests <code>wp-cron.php<\/code> every few minutes.<\/p><\/dd>\n<dt id=\"lazy%20loading%20changed%20how%20my%20page%20looks.\"><h3>Lazy loading changed how my page looks.<\/h3><\/dt>\n<dd><p>Open Settings &gt; Cache Shark and either untick lazy loading, raise \"Skip the first images\", or list the image's class name or file name under \"Never lazy-load these\". Clear the cache afterwards.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20deactivate%20or%20delete%20the%20plugin%3F\"><h3>What happens when I deactivate or delete the plugin?<\/h3><\/dt>\n<dd><p>Deactivating removes the drop-in, the line it added to <code>wp-config.php<\/code>, its <code>.htaccess<\/code> rules and the cached files. Deleting the plugin also removes its settings. A drop-in belonging to another plugin is never touched.<\/p><\/dd>\n<dt id=\"a%20page%20i%20changed%20still%20shows%20old%20content.\"><h3>A page I changed still shows old content.<\/h3><\/dt>\n<dd><p>Use <strong>Clear all cache<\/strong> on the settings page or in the admin bar. If a page shows content from another post (for example a related-posts list), it refreshes when its cache lifespan ends. Developers can add more URLs to clear with the <code>cache_shark_related_urls<\/code> filter, or keep a page out of the cache with the <code>cache_shark_should_cache<\/code> filter.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>New: optional lazy loading for images and iframes (off by default). Skips the first images on each page, images that already have a loading attribute, tracking pixels and anything in your exclude list.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First release: page caching, automatic purging, sitemap preloading, expired page cleanup, GZIP and browser caching rules for Apache and LiteSpeed, settings page.<\/li>\n<\/ul>","raw_excerpt":"Fast, free page caching for WordPress with automatic cache clearing and background preloading from your sitemap.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/391781","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=391781"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/mdraabiul"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=391781"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=391781"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=391781"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=391781"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=391781"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=391781"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}