Version Description
- to clear cache of author page after update/insert post
- to fix PHP Notice: Undefined offset: -1 in wp-fastest-cache/inc/js-utilities.php on line 47.
- to fix PHP Fatal error: Function name must be a string in /public_html/wp-content/plugins/wp-fastest-cache/inc/preload.php on line 316
- to support MultiSite (Beta) [Details]
- to enable gzip for x-font/ttf
- to prevent replace urls with cdn-url if the url has already been replaced with cdn.shortpixel.ai
Download this release
Release Info
Developer | emrevona |
Plugin | WP Fastest Cache |
Version | 0.8.9.2 |
Comparing to | |
See all releases |
Code changes from version 0.8.9.1 to 0.8.9.2
- inc/admin.php +35 -95
- inc/css-utilities.php +12 -4
- inc/js-utilities.php +12 -5
- inc/preload.php +2 -2
- readme.txt +10 -1
- templates/cdn/cloudflare.php +2 -2
- templates/sample_img_list.html +82 -0
- wpFastestCache.php +29 -3
inc/admin.php
CHANGED
@@ -112,9 +112,13 @@
|
|
112 |
include_once ABSPATH."wp-includes/capabilities.php";
|
113 |
include_once ABSPATH."wp-includes/pluggable.php";
|
114 |
|
115 |
-
if(
|
116 |
-
|
117 |
-
|
|
|
|
|
|
|
|
|
118 |
}
|
119 |
|
120 |
if(current_user_can('manage_options')){
|
@@ -599,6 +603,7 @@
|
|
599 |
"AddOutputFilterByType DEFLATE application/javascript"."\n".
|
600 |
"AddOutputFilterByType DEFLATE application/x-javascript"."\n".
|
601 |
"AddOutputFilterByType DEFLATE application/x-font-ttf"."\n".
|
|
|
602 |
"AddOutputFilterByType DEFLATE application/vnd.ms-fontobject"."\n".
|
603 |
"AddOutputFilterByType DEFLATE font/opentype font/ttf font/eot font/otf"."\n".
|
604 |
"</IfModule>"."\n";
|
@@ -756,7 +761,12 @@
|
|
756 |
"</ifModule>"."\n".
|
757 |
"</FilesMatch>"."\n".
|
758 |
"# END WpFastestCache"."\n";
|
759 |
-
|
|
|
|
|
|
|
|
|
|
|
760 |
}
|
761 |
|
762 |
public function http_condition_rule(){
|
@@ -893,6 +903,7 @@
|
|
893 |
$wpFastestCacheLazyLoad = isset($this->options->wpFastestCacheLazyLoad) ? 'checked="checked"' : "";
|
894 |
$wpFastestCacheLazyLoad_keywords = isset($this->options->wpFastestCacheLazyLoad_keywords) ? $this->options->wpFastestCacheLazyLoad_keywords : "";
|
895 |
$wpFastestCacheLazyLoad_placeholder = isset($this->options->wpFastestCacheLazyLoad_placeholder) ? $this->options->wpFastestCacheLazyLoad_placeholder : "default";
|
|
|
896 |
|
897 |
|
898 |
$wpFastestCacheLBC = isset($this->options->wpFastestCacheLBC) ? 'checked="checked"' : "";
|
@@ -1276,6 +1287,8 @@
|
|
1276 |
<div class="inputCon">
|
1277 |
<input type="hidden" value="<?php echo $wpFastestCacheLazyLoad_placeholder; ?>" id="wpFastestCacheLazyLoad_placeholder" name="wpFastestCacheLazyLoad_placeholder">
|
1278 |
<input type="hidden" value="<?php echo $wpFastestCacheLazyLoad_keywords; ?>" id="wpFastestCacheLazyLoad_keywords" name="wpFastestCacheLazyLoad_keywords">
|
|
|
|
|
1279 |
<input type="checkbox" <?php echo $wpFastestCacheLazyLoad; ?> id="wpFastestCacheLazyLoad" name="wpFastestCacheLazyLoad"><label for="wpFastestCacheLazyLoad">Load images and iframes when they enter the browsers viewport</label>
|
1280 |
</div>
|
1281 |
<div class="get-info"><a target="_blank" href="http://www.wpfastestcache.com/premium/lazy-load-reduce-http-request-and-page-load-time/"><img src="<?php echo plugins_url("wp-fastest-cache/images/info.png"); ?>" /></a></div>
|
@@ -1571,88 +1584,7 @@
|
|
1571 |
</div>
|
1572 |
<?php }else{ ?>
|
1573 |
<div class="tab4" style="">
|
1574 |
-
|
1575 |
-
<div style="font-family:sans-serif;font-size:13px;text-align: center; border-radius: 5px; float: left; background-color: rgb(51, 51, 51); color: white; width: 147px; padding: 20px 50px;">
|
1576 |
-
<label>Only available in Premium version</label>
|
1577 |
-
</div>
|
1578 |
-
</div>
|
1579 |
-
<h2 style="opacity: 0.3;padding-left:20px;padding-bottom:10px;">Optimize Image Tool</h2>
|
1580 |
-
<div id="container-show-hide-image-list" style="opacity: 0.3;float: right; padding-right: 20px; cursor: pointer;">
|
1581 |
-
<span id="show-image-list">Show Images</span>
|
1582 |
-
<span id="hide-image-list" style="display:none;">Hide Images</span>
|
1583 |
-
</div>
|
1584 |
-
<div style="opacity: 0.3;width:100%;float:left;" id="wpfc-image-static-panel">
|
1585 |
-
<div style="float: left; width: 100%;">
|
1586 |
-
<div style="float:left;padding-left: 22px;padding-right:15px;">
|
1587 |
-
<div style="display: inline-block;">
|
1588 |
-
<div style="width: 150px; height: 150px; position: relative; border-top-left-radius: 150px; border-top-right-radius: 150px; border-bottom-right-radius: 150px; border-bottom-left-radius: 150px; background-color: #ffcc00;">
|
1589 |
-
|
1590 |
-
|
1591 |
-
<div style="position: absolute; top: 0px; left: 0px; width: 150px; height: 150px; border-top-left-radius: 150px; border-top-right-radius: 150px; border-bottom-right-radius: 150px; border-bottom-left-radius: 150px; clip: rect(0px 150px 150px 75px);">
|
1592 |
-
<div style="position: absolute; top: 0px; left: 0px; width: 150px; height: 150px; border-radius: 150px; clip: rect(0px, 75px, 150px, 0px); transform: rotate(109.62deg); background-color: rgb(255, 165, 0); border-spacing: 109.62px;" id="wpfc-pie-chart-little"></div>
|
1593 |
-
</div>
|
1594 |
-
|
1595 |
-
|
1596 |
-
<div style="display:none;position: absolute; top: 0px; left: 0px; width: 150px; height: 150px; border-top-left-radius: 150px; border-top-right-radius: 150px; border-bottom-right-radius: 150px; border-bottom-left-radius: 150px; clip: rect(0px 150px 150px 25px); -webkit-transform: rotate(0deg); transform: rotate(0deg);" id="wpfc-pie-chart-big-container-first">
|
1597 |
-
<div style="position: absolute; top: 0px; left: 0px; width: 150px; height: 150px; border-top-left-radius: 150px; border-top-right-radius: 150px; border-bottom-right-radius: 150px; border-bottom-left-radius: 150px; clip: rect(0px 75px 150px 0px); -webkit-transform: rotate(180deg); transform: rotate(180deg); background-color: #FFA500;"></div>
|
1598 |
-
</div>
|
1599 |
-
<div style="display:none;position: absolute; top: 0px; left: 0px; width: 150px; height: 150px; border-top-left-radius: 150px; border-top-right-radius: 150px; border-bottom-right-radius: 150px; border-bottom-left-radius: 150px; clip: rect(0px 150px 150px 75px); -webkit-transform: rotate(180deg); transform: rotate(180deg);" id="wpfc-pie-chart-big-container-second-right">
|
1600 |
-
<div style="position: absolute; top: 0px; left: 0px; width: 150px; height: 150px; border-top-left-radius: 150px; border-top-right-radius: 150px; border-bottom-right-radius: 150px; border-bottom-left-radius: 150px; clip: rect(0px 75px 150px 0px); -webkit-transform: rotate(90deg); transform: rotate(90deg); background-color: #FFA500;" id="wpfc-pie-chart-big-container-second-left"></div>
|
1601 |
-
</div>
|
1602 |
-
|
1603 |
-
</div>
|
1604 |
-
<div style="width: 114px;height: 114px;margin-top: -133px;background-color: white;margin-left: 18px;position: absolute;border-radius: 150px;">
|
1605 |
-
<p style="text-align:center;margin:27px 0 0 0;color: black;">Succeed</p>
|
1606 |
-
<p style="text-align: center; font-size: 18px; font-weight: bold; font-family: verdana; margin: -2px 0px 0px; color: black;" id="wpfc-optimized-statics-percent" class="">30.45</p>
|
1607 |
-
<p style="text-align:center;margin:0;color: black;">%</p>
|
1608 |
-
</div>
|
1609 |
-
</div>
|
1610 |
-
</div>
|
1611 |
-
<div style="float: left;padding-left:12px;" id="wpfc-statics-right">
|
1612 |
-
<ul style="list-style: none outside none;float: left;">
|
1613 |
-
<li>
|
1614 |
-
<div style="background-color: rgb(29, 107, 157);width:15px;height:15px;float:left;margin-top:4px;border-radius:5px;"></div>
|
1615 |
-
<div style="float:left;padding-left:6px;">All</div>
|
1616 |
-
<div style="font-size: 14px; font-weight: bold; color: black; float: left; width: 65%; margin-left: 5px;" id="wpfc-optimized-statics-total_image_number" class="">7196</div>
|
1617 |
-
</li>
|
1618 |
-
<li>
|
1619 |
-
<div style="background-color: rgb(29, 107, 157);width:15px;height:15px;float:left;margin-top:4px;border-radius:5px;"></div>
|
1620 |
-
<div style="float:left;padding-left:6px;">Pending</div>
|
1621 |
-
<div style="font-size: 14px; font-weight: bold; color: black; float: left; width: 65%; margin-left: 5px;" id="wpfc-optimized-statics-pending" class="">5002</div>
|
1622 |
-
</li>
|
1623 |
-
<li>
|
1624 |
-
<div style="background-color: #FF0000;width:15px;height:15px;float:left;margin-top:4px;border-radius:5px;"></div>
|
1625 |
-
<div style="float:left;padding-left:6px;">Errors</div>
|
1626 |
-
<div style="font-size: 14px; font-weight: bold; color: black; float: left; width: 65%; margin-left: 5px;" id="wpfc-optimized-statics-error" class="">3</div>
|
1627 |
-
</li>
|
1628 |
-
</ul>
|
1629 |
-
<ul style="list-style: none outside none;float: left;">
|
1630 |
-
<li>
|
1631 |
-
<div style="background-color: rgb(61, 207, 60);width:15px;height:15px;float:left;margin-top:4px;border-radius:5px;"></div>
|
1632 |
-
<div style="float:left;padding-left:6px;"><span>Optimized Images</span></div>
|
1633 |
-
<div style="font-size: 14px; font-weight: bold; color: black; float: left; width: 65%; margin-left: 5px;" id="wpfc-optimized-statics-optimized" class="">2191</div>
|
1634 |
-
</li>
|
1635 |
-
|
1636 |
-
<li>
|
1637 |
-
<div style="background-color: rgb(61, 207, 60);width:15px;height:15px;float:left;margin-top:4px;border-radius:5px;"></div>
|
1638 |
-
<div style="float:left;padding-left:6px;"><span>Total Reduction</span></div>
|
1639 |
-
<div style="font-size: 14px; font-weight: bold; color: black; float: left; width: 80%; margin-left: 5px;" id="wpfc-optimized-statics-reduction" class="">78400.897</div>
|
1640 |
-
</li>
|
1641 |
-
<li></li>
|
1642 |
-
</ul>
|
1643 |
-
|
1644 |
-
<ul style="list-style: none outside none;float: left;">
|
1645 |
-
<li>
|
1646 |
-
<h1 style="margin-top:0;float:left;">Credit: <span style="display: inline-block; height: 16px; width: auto;min-width:25px;" id="wpfc-optimized-statics-credit" class="">9910</span></h1>
|
1647 |
-
<span id="buy-image-credit">More</span>
|
1648 |
-
</li>
|
1649 |
-
<li>
|
1650 |
-
<input type="submit" class="button-primary" value="Optimize All" id="wpfc-optimize-images-button" style="width:100%;height:110px;">
|
1651 |
-
</li>
|
1652 |
-
</ul>
|
1653 |
-
</div>
|
1654 |
-
</div>
|
1655 |
-
</div>
|
1656 |
</div>
|
1657 |
<?php } ?>
|
1658 |
<div class="tab5">
|
@@ -1717,15 +1649,23 @@
|
|
1717 |
<span>Purchased</span>
|
1718 |
</button>
|
1719 |
<?php }else{ ?>
|
1720 |
-
|
1721 |
-
|
1722 |
-
|
1723 |
-
|
1724 |
-
|
1725 |
-
|
1726 |
-
|
1727 |
-
|
1728 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1729 |
<?php } ?>
|
1730 |
<?php } ?>
|
1731 |
|
112 |
include_once ABSPATH."wp-includes/capabilities.php";
|
113 |
include_once ABSPATH."wp-includes/pluggable.php";
|
114 |
|
115 |
+
if(defined("WPFC_MULTI_SITE_BETA") && WPFC_MULTI_SITE_BETA){
|
116 |
+
//nothing
|
117 |
+
}else{
|
118 |
+
if(is_multisite()){
|
119 |
+
$this->notify(array("The plugin does not work with Multisite", "error"));
|
120 |
+
return 0;
|
121 |
+
}
|
122 |
}
|
123 |
|
124 |
if(current_user_can('manage_options')){
|
603 |
"AddOutputFilterByType DEFLATE application/javascript"."\n".
|
604 |
"AddOutputFilterByType DEFLATE application/x-javascript"."\n".
|
605 |
"AddOutputFilterByType DEFLATE application/x-font-ttf"."\n".
|
606 |
+
"AddOutputFilterByType DEFLATE x-font/ttf"."\n".
|
607 |
"AddOutputFilterByType DEFLATE application/vnd.ms-fontobject"."\n".
|
608 |
"AddOutputFilterByType DEFLATE font/opentype font/ttf font/eot font/otf"."\n".
|
609 |
"</IfModule>"."\n";
|
761 |
"</ifModule>"."\n".
|
762 |
"</FilesMatch>"."\n".
|
763 |
"# END WpFastestCache"."\n";
|
764 |
+
|
765 |
+
if(is_multisite()){
|
766 |
+
return "";
|
767 |
+
}else{
|
768 |
+
return preg_replace("/\n+/","\n", $data);
|
769 |
+
}
|
770 |
}
|
771 |
|
772 |
public function http_condition_rule(){
|
903 |
$wpFastestCacheLazyLoad = isset($this->options->wpFastestCacheLazyLoad) ? 'checked="checked"' : "";
|
904 |
$wpFastestCacheLazyLoad_keywords = isset($this->options->wpFastestCacheLazyLoad_keywords) ? $this->options->wpFastestCacheLazyLoad_keywords : "";
|
905 |
$wpFastestCacheLazyLoad_placeholder = isset($this->options->wpFastestCacheLazyLoad_placeholder) ? $this->options->wpFastestCacheLazyLoad_placeholder : "default";
|
906 |
+
$wpFastestCacheLazyLoad_exclude_full_size_img = isset($this->options->wpFastestCacheLazyLoad_exclude_full_size_img) ? 'checked="checked"' : "";
|
907 |
|
908 |
|
909 |
$wpFastestCacheLBC = isset($this->options->wpFastestCacheLBC) ? 'checked="checked"' : "";
|
1287 |
<div class="inputCon">
|
1288 |
<input type="hidden" value="<?php echo $wpFastestCacheLazyLoad_placeholder; ?>" id="wpFastestCacheLazyLoad_placeholder" name="wpFastestCacheLazyLoad_placeholder">
|
1289 |
<input type="hidden" value="<?php echo $wpFastestCacheLazyLoad_keywords; ?>" id="wpFastestCacheLazyLoad_keywords" name="wpFastestCacheLazyLoad_keywords">
|
1290 |
+
<input type="hidden" value="<?php echo $wpFastestCacheLazyLoad_exclude_full_size_img; ?>" id="wpFastestCacheLazyLoad_exclude_full_size_img" name="wpFastestCacheLazyLoad_exclude_full_size_img">
|
1291 |
+
|
1292 |
<input type="checkbox" <?php echo $wpFastestCacheLazyLoad; ?> id="wpFastestCacheLazyLoad" name="wpFastestCacheLazyLoad"><label for="wpFastestCacheLazyLoad">Load images and iframes when they enter the browsers viewport</label>
|
1293 |
</div>
|
1294 |
<div class="get-info"><a target="_blank" href="http://www.wpfastestcache.com/premium/lazy-load-reduce-http-request-and-page-load-time/"><img src="<?php echo plugins_url("wp-fastest-cache/images/info.png"); ?>" /></a></div>
|
1584 |
</div>
|
1585 |
<?php }else{ ?>
|
1586 |
<div class="tab4" style="">
|
1587 |
+
<?php include(WPFC_MAIN_PATH."templates/sample_img_list.html"); ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1588 |
</div>
|
1589 |
<?php } ?>
|
1590 |
<div class="tab5">
|
1649 |
<span>Purchased</span>
|
1650 |
</button>
|
1651 |
<?php }else{ ?>
|
1652 |
+
|
1653 |
+
<?php if(is_multisite()){ ?>
|
1654 |
+
<button id="wpfc-buy-premium-button" type="submit" class="wpfc-btn primaryCta" style="width:200px;background-color:red;border-color:red;">
|
1655 |
+
<span>Not Available<br>for<br>Multi-Site</span>
|
1656 |
+
</button>
|
1657 |
+
<?php }else{ ?>
|
1658 |
+
<form action="https://api.wpfastestcache.net/paypal/buypremium/" method="post">
|
1659 |
+
<input type="hidden" name="ip" value="<?php echo $_SERVER["REMOTE_ADDR"]; ?>">
|
1660 |
+
<input type="hidden" name="wpfclang" value="<?php echo isset($this->options->wpFastestCacheLanguage) ? esc_attr($this->options->wpFastestCacheLanguage) : ""; ?>">
|
1661 |
+
<input type="hidden" name="bloglang" value="<?php echo get_bloginfo('language'); ?>">
|
1662 |
+
<input type="hidden" name="hostname" value="<?php echo str_replace(array("http://", "www."), "", $_SERVER["HTTP_HOST"]); ?>">
|
1663 |
+
<button id="wpfc-buy-premium-button" type="submit" class="wpfc-btn primaryCta" style="width:200px;">
|
1664 |
+
<span>Buy</span>
|
1665 |
+
</button>
|
1666 |
+
</form>
|
1667 |
+
<?php } ?>
|
1668 |
+
|
1669 |
<?php } ?>
|
1670 |
<?php } ?>
|
1671 |
|
inc/css-utilities.php
CHANGED
@@ -4,8 +4,16 @@
|
|
4 |
private $tags = array();
|
5 |
private $except = "";
|
6 |
private $wpfc;
|
|
|
7 |
|
8 |
public function __construct($wpfc, $html){
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
$this->wpfc = $wpfc;
|
10 |
$this->html = $html;
|
11 |
$this->set_except_tags();
|
@@ -94,8 +102,8 @@
|
|
94 |
$combined_name = $this->wpfc->create_name($group_value);
|
95 |
$combined_link = "";
|
96 |
|
97 |
-
$cachFilePath = WPFC_WP_CONTENT_DIR."/
|
98 |
-
$cssLink = str_replace(array("http:", "https:"), "", WPFC_WP_CONTENT_URL)."/
|
99 |
|
100 |
if(is_dir($cachFilePath)){
|
101 |
if($cssFiles = @scandir($cachFilePath, 1)){
|
@@ -333,8 +341,8 @@
|
|
333 |
$this->url = $url;
|
334 |
$md5 = $this->wpfc->create_name($url);
|
335 |
|
336 |
-
$cachFilePath = WPFC_WP_CONTENT_DIR."/
|
337 |
-
$cssLink = WPFC_WP_CONTENT_URL."/
|
338 |
|
339 |
if(is_dir($cachFilePath)){
|
340 |
if($cssFiles = @scandir($cachFilePath, 1)){
|
4 |
private $tags = array();
|
5 |
private $except = "";
|
6 |
private $wpfc;
|
7 |
+
private $cache_wpfc_minified = "";
|
8 |
|
9 |
public function __construct($wpfc, $html){
|
10 |
+
if(is_multisite()){
|
11 |
+
$this->cache_wpfc_minified = "cache/".$_SERVER['HTTP_HOST']."/wpfc-minified";
|
12 |
+
}else{
|
13 |
+
$this->cache_wpfc_minified = "cache/wpfc-minified";
|
14 |
+
}
|
15 |
+
|
16 |
+
|
17 |
$this->wpfc = $wpfc;
|
18 |
$this->html = $html;
|
19 |
$this->set_except_tags();
|
102 |
$combined_name = $this->wpfc->create_name($group_value);
|
103 |
$combined_link = "";
|
104 |
|
105 |
+
$cachFilePath = WPFC_WP_CONTENT_DIR."/".$this->cache_wpfc_minified."/".$combined_name;
|
106 |
+
$cssLink = str_replace(array("http:", "https:"), "", WPFC_WP_CONTENT_URL)."/".$this->cache_wpfc_minified."/".$combined_name;
|
107 |
|
108 |
if(is_dir($cachFilePath)){
|
109 |
if($cssFiles = @scandir($cachFilePath, 1)){
|
341 |
$this->url = $url;
|
342 |
$md5 = $this->wpfc->create_name($url);
|
343 |
|
344 |
+
$cachFilePath = WPFC_WP_CONTENT_DIR."/".$this->cache_wpfc_minified."/".$md5;
|
345 |
+
$cssLink = WPFC_WP_CONTENT_URL."/".$this->cache_wpfc_minified."/".$md5;
|
346 |
|
347 |
if(is_dir($cachFilePath)){
|
348 |
if($cssFiles = @scandir($cachFilePath, 1)){
|
inc/js-utilities.php
CHANGED
@@ -6,8 +6,15 @@
|
|
6 |
private $jsLinksExcept = "";
|
7 |
private $url = "";
|
8 |
private $minify;
|
|
|
9 |
|
10 |
public function __construct($wpfc, $html, $minify = false){
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
//$this->html = preg_replace("/\s+/", " ", ((string) $html));
|
12 |
$this->minify = $minify;
|
13 |
$this->wpfc = $wpfc;
|
@@ -43,7 +50,7 @@
|
|
43 |
if(!preg_match("/<script[^>]+json[^>]+>.+/", $script_tag) && !preg_match("/<script[^>]+text\/template[^>]+>.+/", $script_tag)){
|
44 |
if($href = $this->checkInternal($script_tag)){
|
45 |
if(strpos($this->jsLinksExcept, $href) === false){
|
46 |
-
if($this->check_exclude($href)){
|
47 |
$this->mergeJs($prev_content, $this->jsLinks[$key - 1]);
|
48 |
$prev_content = "";
|
49 |
continue;
|
@@ -168,8 +175,8 @@
|
|
168 |
|
169 |
$md5 = $this->wpfc->create_name($url);
|
170 |
|
171 |
-
$cachFilePath = WPFC_WP_CONTENT_DIR."/
|
172 |
-
$jsLink = WPFC_WP_CONTENT_URL."/
|
173 |
|
174 |
if(is_dir($cachFilePath)){
|
175 |
return array("cachFilePath" => $cachFilePath, "jsContent" => "", "url" => $jsLink);
|
@@ -226,7 +233,7 @@
|
|
226 |
|
227 |
$name = base_convert(crc32($name), 20, 36);
|
228 |
|
229 |
-
$cachFilePath = WPFC_WP_CONTENT_DIR."/
|
230 |
|
231 |
if(!is_dir($cachFilePath)){
|
232 |
$this->wpfc->createFolder($cachFilePath, $js_content, "js");
|
@@ -237,7 +244,7 @@
|
|
237 |
$jsFiles[0] = preg_replace("/\.gz$/", "", $jsFiles[0]);
|
238 |
|
239 |
$prefixLink = str_replace(array("http:", "https:"), "", WPFC_WP_CONTENT_URL);
|
240 |
-
$newLink = "<script src='".$prefixLink."/
|
241 |
|
242 |
$script_tag = substr($this->html, $value["start"], ($value["end"] - $value["start"] + 1));
|
243 |
|
6 |
private $jsLinksExcept = "";
|
7 |
private $url = "";
|
8 |
private $minify;
|
9 |
+
private $cache_wpfc_minified = "";
|
10 |
|
11 |
public function __construct($wpfc, $html, $minify = false){
|
12 |
+
if(is_multisite()){
|
13 |
+
$this->cache_wpfc_minified = "cache/".$_SERVER['HTTP_HOST']."/wpfc-minified";
|
14 |
+
}else{
|
15 |
+
$this->cache_wpfc_minified = "cache/wpfc-minified";
|
16 |
+
}
|
17 |
+
|
18 |
//$this->html = preg_replace("/\s+/", " ", ((string) $html));
|
19 |
$this->minify = $minify;
|
20 |
$this->wpfc = $wpfc;
|
50 |
if(!preg_match("/<script[^>]+json[^>]+>.+/", $script_tag) && !preg_match("/<script[^>]+text\/template[^>]+>.+/", $script_tag)){
|
51 |
if($href = $this->checkInternal($script_tag)){
|
52 |
if(strpos($this->jsLinksExcept, $href) === false){
|
53 |
+
if(($key + 1) && $this->check_exclude($href)){
|
54 |
$this->mergeJs($prev_content, $this->jsLinks[$key - 1]);
|
55 |
$prev_content = "";
|
56 |
continue;
|
175 |
|
176 |
$md5 = $this->wpfc->create_name($url);
|
177 |
|
178 |
+
$cachFilePath = WPFC_WP_CONTENT_DIR."/".$this->cache_wpfc_minified."/".$md5;
|
179 |
+
$jsLink = WPFC_WP_CONTENT_URL."/".$this->cache_wpfc_minified."/".$md5;
|
180 |
|
181 |
if(is_dir($cachFilePath)){
|
182 |
return array("cachFilePath" => $cachFilePath, "jsContent" => "", "url" => $jsLink);
|
233 |
|
234 |
$name = base_convert(crc32($name), 20, 36);
|
235 |
|
236 |
+
$cachFilePath = WPFC_WP_CONTENT_DIR."/".$this->cache_wpfc_minified."/".$name;
|
237 |
|
238 |
if(!is_dir($cachFilePath)){
|
239 |
$this->wpfc->createFolder($cachFilePath, $js_content, "js");
|
244 |
$jsFiles[0] = preg_replace("/\.gz$/", "", $jsFiles[0]);
|
245 |
|
246 |
$prefixLink = str_replace(array("http:", "https:"), "", WPFC_WP_CONTENT_URL);
|
247 |
+
$newLink = "<script src='".$prefixLink."/".$this->cache_wpfc_minified."/".$name."/".$jsFiles[0]."' type=\"text/javascript\"></script>";
|
248 |
|
249 |
$script_tag = substr($this->html, $value["start"], ($value["end"] - $value["start"] + 1));
|
250 |
|
inc/preload.php
CHANGED
@@ -61,7 +61,7 @@
|
|
61 |
}
|
62 |
}
|
63 |
|
64 |
-
public static function create_preload_cache($options
|
65 |
if($data = get_option("WpFastestCachePreLoad")){
|
66 |
if(!isset($options->wpFastestCacheStatus)){
|
67 |
die("Cache System must be enabled");
|
@@ -313,7 +313,7 @@
|
|
313 |
$user_agent = "WP Fastest Cache Preload iPhone Mobile Bot";
|
314 |
}
|
315 |
|
316 |
-
if($wpfc_remote_get($arr["url"], $user_agent)){
|
317 |
$status = "<strong style=\"color:lightgreen;\">OK</strong>";
|
318 |
}else{
|
319 |
$status = "<strong style=\"color:red;\">ERROR</strong>";
|
61 |
}
|
62 |
}
|
63 |
|
64 |
+
public static function create_preload_cache($options){
|
65 |
if($data = get_option("WpFastestCachePreLoad")){
|
66 |
if(!isset($options->wpFastestCacheStatus)){
|
67 |
die("Cache System must be enabled");
|
313 |
$user_agent = "WP Fastest Cache Preload iPhone Mobile Bot";
|
314 |
}
|
315 |
|
316 |
+
if($GLOBALS["wp_fastest_cache"]->wpfc_remote_get($arr["url"], $user_agent)){
|
317 |
$status = "<strong style=\"color:lightgreen;\">OK</strong>";
|
318 |
}else{
|
319 |
$status = "<strong style=\"color:red;\">ERROR</strong>";
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: http://profiles.wordpress.org/emrevona/
|
|
4 |
Tags: cache, caching, performance, wp-cache, total cache, super cache, cdn
|
5 |
Requires at least: 3.3
|
6 |
Tested up to: 5.1
|
7 |
-
Stable tag: 0.8.9.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -103,6 +103,15 @@ Wpfc does not support Wordpress Multisite yet.
|
|
103 |
|
104 |
== Changelog ==
|
105 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
106 |
= 0.8.9.1 =
|
107 |
* to disable webp image extension if cloudflare subscription is free
|
108 |
* to fix cache deletion security issue of WP-PostRatings (CVE-2019-6726 by Sebastian Neef)
|
4 |
Tags: cache, caching, performance, wp-cache, total cache, super cache, cdn
|
5 |
Requires at least: 3.3
|
6 |
Tested up to: 5.1
|
7 |
+
Stable tag: 0.8.9.2
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
103 |
|
104 |
== Changelog ==
|
105 |
|
106 |
+
= 0.8.9.2 =
|
107 |
+
* to clear cache of author page after update/insert post
|
108 |
+
* to fix PHP Notice: Undefined offset: -1 in wp-fastest-cache/inc/js-utilities.php on line 47.
|
109 |
+
* to fix PHP Fatal error: Function name must be a string in /public_html/wp-content/plugins/wp-fastest-cache/inc/preload.php on line 316
|
110 |
+
* to support MultiSite (Beta) [<a target="_blank" href="https://www.wpfastestcache.com/blog/multi-site/">Details</a>]
|
111 |
+
* to enable gzip for x-font/ttf
|
112 |
+
* to prevent replace urls with cdn-url if the url has already been replaced with cdn.shortpixel.ai
|
113 |
+
|
114 |
+
|
115 |
= 0.8.9.1 =
|
116 |
* to disable webp image extension if cloudflare subscription is free
|
117 |
* to fix cache deletion security issue of WP-PostRatings (CVE-2019-6726 by Sebastian Neef)
|
templates/cdn/cloudflare.php
CHANGED
@@ -61,10 +61,10 @@
|
|
61 |
</div>
|
62 |
<div wpfc-cdn-page="5" class="wiz-cont" style="display:none">
|
63 |
<h1>Browser Cache Expiration</h1>
|
64 |
-
<p>Browser Cache Expiration option has been set as
|
65 |
|
66 |
<div class="wpfc-checkbox-list" style="text-align:center;">
|
67 |
-
<img src="data:image/png;base64,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"/>
|
68 |
</div>
|
69 |
</div>
|
70 |
<div wpfc-cdn-page="6" class="wiz-cont" style="display:none">
|
61 |
</div>
|
62 |
<div wpfc-cdn-page="5" class="wiz-cont" style="display:none">
|
63 |
<h1>Browser Cache Expiration</h1>
|
64 |
+
<p>Browser Cache Expiration option has been set as 6 months.</p>
|
65 |
|
66 |
<div class="wpfc-checkbox-list" style="text-align:center;">
|
67 |
+
<img src="data:image/jpeg;base64,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"/>
|
68 |
</div>
|
69 |
</div>
|
70 |
<div wpfc-cdn-page="6" class="wiz-cont" style="display:none">
|
templates/sample_img_list.html
ADDED
@@ -0,0 +1,82 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div style="z-index:9999;width: 160px; height: 60px; position: absolute; margin-left: 254px; margin-top: 74px; color: white;">
|
2 |
+
<div style="font-family:sans-serif;font-size:13px;text-align: center; border-radius: 5px; float: left; background-color: rgb(51, 51, 51); color: white; width: 147px; padding: 20px 50px;">
|
3 |
+
<label>Only available in Premium version</label>
|
4 |
+
</div>
|
5 |
+
</div>
|
6 |
+
<h2 style="opacity: 0.3;padding-left:20px;padding-bottom:10px;">Optimize Image Tool</h2>
|
7 |
+
<div id="container-show-hide-image-list" style="opacity: 0.3;float: right; padding-right: 20px; cursor: pointer;">
|
8 |
+
<span id="show-image-list">Show Images</span>
|
9 |
+
<span id="hide-image-list" style="display:none;">Hide Images</span>
|
10 |
+
</div>
|
11 |
+
<div style="opacity: 0.3;width:100%;float:left;" id="wpfc-image-static-panel">
|
12 |
+
<div style="float: left; width: 100%;">
|
13 |
+
<div style="float:left;padding-left: 22px;padding-right:15px;">
|
14 |
+
<div style="display: inline-block;">
|
15 |
+
<div style="width: 150px; height: 150px; position: relative; border-top-left-radius: 150px; border-top-right-radius: 150px; border-bottom-right-radius: 150px; border-bottom-left-radius: 150px; background-color: #ffcc00;">
|
16 |
+
|
17 |
+
|
18 |
+
<div style="position: absolute; top: 0px; left: 0px; width: 150px; height: 150px; border-top-left-radius: 150px; border-top-right-radius: 150px; border-bottom-right-radius: 150px; border-bottom-left-radius: 150px; clip: rect(0px 150px 150px 75px);">
|
19 |
+
<div style="position: absolute; top: 0px; left: 0px; width: 150px; height: 150px; border-radius: 150px; clip: rect(0px, 75px, 150px, 0px); transform: rotate(109.62deg); background-color: rgb(255, 165, 0); border-spacing: 109.62px;" id="wpfc-pie-chart-little"></div>
|
20 |
+
</div>
|
21 |
+
|
22 |
+
|
23 |
+
<div style="display:none;position: absolute; top: 0px; left: 0px; width: 150px; height: 150px; border-top-left-radius: 150px; border-top-right-radius: 150px; border-bottom-right-radius: 150px; border-bottom-left-radius: 150px; clip: rect(0px 150px 150px 25px); -webkit-transform: rotate(0deg); transform: rotate(0deg);" id="wpfc-pie-chart-big-container-first">
|
24 |
+
<div style="position: absolute; top: 0px; left: 0px; width: 150px; height: 150px; border-top-left-radius: 150px; border-top-right-radius: 150px; border-bottom-right-radius: 150px; border-bottom-left-radius: 150px; clip: rect(0px 75px 150px 0px); -webkit-transform: rotate(180deg); transform: rotate(180deg); background-color: #FFA500;"></div>
|
25 |
+
</div>
|
26 |
+
<div style="display:none;position: absolute; top: 0px; left: 0px; width: 150px; height: 150px; border-top-left-radius: 150px; border-top-right-radius: 150px; border-bottom-right-radius: 150px; border-bottom-left-radius: 150px; clip: rect(0px 150px 150px 75px); -webkit-transform: rotate(180deg); transform: rotate(180deg);" id="wpfc-pie-chart-big-container-second-right">
|
27 |
+
<div style="position: absolute; top: 0px; left: 0px; width: 150px; height: 150px; border-top-left-radius: 150px; border-top-right-radius: 150px; border-bottom-right-radius: 150px; border-bottom-left-radius: 150px; clip: rect(0px 75px 150px 0px); -webkit-transform: rotate(90deg); transform: rotate(90deg); background-color: #FFA500;" id="wpfc-pie-chart-big-container-second-left"></div>
|
28 |
+
</div>
|
29 |
+
|
30 |
+
</div>
|
31 |
+
<div style="width: 114px;height: 114px;margin-top: -133px;background-color: white;margin-left: 18px;position: absolute;border-radius: 150px;">
|
32 |
+
<p style="text-align:center;margin:27px 0 0 0;color: black;">Succeed</p>
|
33 |
+
<p style="text-align: center; font-size: 18px; font-weight: bold; font-family: verdana; margin: -2px 0px 0px; color: black;" id="wpfc-optimized-statics-percent" class="">30.45</p>
|
34 |
+
<p style="text-align:center;margin:0;color: black;">%</p>
|
35 |
+
</div>
|
36 |
+
</div>
|
37 |
+
</div>
|
38 |
+
<div style="float: left;padding-left:12px;" id="wpfc-statics-right">
|
39 |
+
<ul style="list-style: none outside none;float: left;">
|
40 |
+
<li>
|
41 |
+
<div style="background-color: rgb(29, 107, 157);width:15px;height:15px;float:left;margin-top:4px;border-radius:5px;"></div>
|
42 |
+
<div style="float:left;padding-left:6px;">All</div>
|
43 |
+
<div style="font-size: 14px; font-weight: bold; color: black; float: left; width: 65%; margin-left: 5px;" id="wpfc-optimized-statics-total_image_number" class="">7196</div>
|
44 |
+
</li>
|
45 |
+
<li>
|
46 |
+
<div style="background-color: rgb(29, 107, 157);width:15px;height:15px;float:left;margin-top:4px;border-radius:5px;"></div>
|
47 |
+
<div style="float:left;padding-left:6px;">Pending</div>
|
48 |
+
<div style="font-size: 14px; font-weight: bold; color: black; float: left; width: 65%; margin-left: 5px;" id="wpfc-optimized-statics-pending" class="">5002</div>
|
49 |
+
</li>
|
50 |
+
<li>
|
51 |
+
<div style="background-color: #FF0000;width:15px;height:15px;float:left;margin-top:4px;border-radius:5px;"></div>
|
52 |
+
<div style="float:left;padding-left:6px;">Errors</div>
|
53 |
+
<div style="font-size: 14px; font-weight: bold; color: black; float: left; width: 65%; margin-left: 5px;" id="wpfc-optimized-statics-error" class="">3</div>
|
54 |
+
</li>
|
55 |
+
</ul>
|
56 |
+
<ul style="list-style: none outside none;float: left;">
|
57 |
+
<li>
|
58 |
+
<div style="background-color: rgb(61, 207, 60);width:15px;height:15px;float:left;margin-top:4px;border-radius:5px;"></div>
|
59 |
+
<div style="float:left;padding-left:6px;"><span>Optimized Images</span></div>
|
60 |
+
<div style="font-size: 14px; font-weight: bold; color: black; float: left; width: 65%; margin-left: 5px;" id="wpfc-optimized-statics-optimized" class="">2191</div>
|
61 |
+
</li>
|
62 |
+
|
63 |
+
<li>
|
64 |
+
<div style="background-color: rgb(61, 207, 60);width:15px;height:15px;float:left;margin-top:4px;border-radius:5px;"></div>
|
65 |
+
<div style="float:left;padding-left:6px;"><span>Total Reduction</span></div>
|
66 |
+
<div style="font-size: 14px; font-weight: bold; color: black; float: left; width: 80%; margin-left: 5px;" id="wpfc-optimized-statics-reduction" class="">78400.897</div>
|
67 |
+
</li>
|
68 |
+
<li></li>
|
69 |
+
</ul>
|
70 |
+
|
71 |
+
<ul style="list-style: none outside none;float: left;">
|
72 |
+
<li>
|
73 |
+
<h1 style="margin-top:0;float:left;">Credit: <span style="display: inline-block; height: 16px; width: auto;min-width:25px;" id="wpfc-optimized-statics-credit" class="">9910</span></h1>
|
74 |
+
<span id="buy-image-credit">More</span>
|
75 |
+
</li>
|
76 |
+
<li>
|
77 |
+
<input type="submit" class="button-primary" value="Optimize All" id="wpfc-optimize-images-button" style="width:100%;height:110px;">
|
78 |
+
</li>
|
79 |
+
</ul>
|
80 |
+
</div>
|
81 |
+
</div>
|
82 |
+
</div>
|
wpFastestCache.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: WP Fastest Cache
|
4 |
Plugin URI: http://wordpress.org/plugins/wp-fastest-cache/
|
5 |
Description: The simplest and fastest WP Cache system
|
6 |
-
Version: 0.8.9.
|
7 |
Author: Emre Vona
|
8 |
Author URI: http://tr.linkedin.com/in/emrevona
|
9 |
Text Domain: wp-fastest-cache
|
@@ -729,7 +729,7 @@ GNU General Public License for more details.
|
|
729 |
return "wp_fastest_cache";
|
730 |
}
|
731 |
|
732 |
-
|
733 |
/*
|
734 |
Sample Paths;
|
735 |
|
@@ -759,7 +759,12 @@ GNU General Public License for more details.
|
|
759 |
|
760 |
/cache/all/testWpFc/
|
761 |
*/
|
|
|
762 |
if($path){
|
|
|
|
|
|
|
|
|
763 |
return WPFC_WP_CONTENT_DIR.$path;
|
764 |
}else{
|
765 |
return WPFC_WP_CONTENT_DIR;
|
@@ -943,6 +948,9 @@ GNU General Public License for more details.
|
|
943 |
// to clear cache of homepage
|
944 |
$this->deleteHomePageCache();
|
945 |
|
|
|
|
|
|
|
946 |
// to clear cache of cats and tags which contains the post (only first page)
|
947 |
global $wpdb;
|
948 |
$terms = $wpdb->get_results("SELECT * FROM `".$wpdb->prefix."term_relationships` WHERE `object_id`=".$post_id, ARRAY_A);
|
@@ -954,6 +962,19 @@ GNU General Public License for more details.
|
|
954 |
}
|
955 |
}
|
956 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
957 |
public function delete_cache_of_term($term_taxonomy_id){
|
958 |
$term = get_term_by("term_taxonomy_id", $term_taxonomy_id);
|
959 |
|
@@ -1160,7 +1181,7 @@ GNU General Public License for more details.
|
|
1160 |
$this->options = $this->getOptions();
|
1161 |
|
1162 |
include_once('inc/preload.php');
|
1163 |
-
PreloadWPFC::create_preload_cache($this->options
|
1164 |
}
|
1165 |
|
1166 |
public function wpfc_remote_get($url, $user_agent){
|
@@ -1569,6 +1590,11 @@ GNU General Public License for more details.
|
|
1569 |
return $matches[0];
|
1570 |
}
|
1571 |
|
|
|
|
|
|
|
|
|
|
|
1572 |
if(preg_match("/^\/\/random/", $cdn->cdnurl) || preg_match("/\/\/i\d\.wp\.com/", $cdn->cdnurl)){
|
1573 |
if(preg_match("/^\/\/random/", $cdn->cdnurl)){
|
1574 |
$cdnurl = "//i".rand(0,3).".wp.com/".str_replace("www.", "", $_SERVER["HTTP_HOST"]);
|
3 |
Plugin Name: WP Fastest Cache
|
4 |
Plugin URI: http://wordpress.org/plugins/wp-fastest-cache/
|
5 |
Description: The simplest and fastest WP Cache system
|
6 |
+
Version: 0.8.9.2
|
7 |
Author: Emre Vona
|
8 |
Author URI: http://tr.linkedin.com/in/emrevona
|
9 |
Text Domain: wp-fastest-cache
|
729 |
return "wp_fastest_cache";
|
730 |
}
|
731 |
|
732 |
+
public function getWpContentDir($path = false){
|
733 |
/*
|
734 |
Sample Paths;
|
735 |
|
759 |
|
760 |
/cache/all/testWpFc/
|
761 |
*/
|
762 |
+
|
763 |
if($path){
|
764 |
+
if(is_multisite()){
|
765 |
+
$path = preg_replace("/\/cache\/(all|wpfc-minified|wpfc-widget-cache|wpfc-mobile-cache)/", "/cache/".$_SERVER['HTTP_HOST']."/$1", $path);
|
766 |
+
}
|
767 |
+
|
768 |
return WPFC_WP_CONTENT_DIR.$path;
|
769 |
}else{
|
770 |
return WPFC_WP_CONTENT_DIR;
|
948 |
// to clear cache of homepage
|
949 |
$this->deleteHomePageCache();
|
950 |
|
951 |
+
// to clear cache of author page
|
952 |
+
$this->delete_author_page_cache($post_id);
|
953 |
+
|
954 |
// to clear cache of cats and tags which contains the post (only first page)
|
955 |
global $wpdb;
|
956 |
$terms = $wpdb->get_results("SELECT * FROM `".$wpdb->prefix."term_relationships` WHERE `object_id`=".$post_id, ARRAY_A);
|
962 |
}
|
963 |
}
|
964 |
|
965 |
+
public function delete_author_page_cache($post_id){
|
966 |
+
$author_id = get_post_field ('post_author', $post_id);
|
967 |
+
$permalink = get_author_posts_url($author_id);
|
968 |
+
|
969 |
+
if(preg_match("/https?:\/\/[^\/]+\/(.+)/", $permalink, $out)){
|
970 |
+
$path = $this->getWpContentDir("/cache/all/").$out[1];
|
971 |
+
$mobile_path = $this->getWpContentDir("/cache/wpfc-mobile-cache/").$out[1];
|
972 |
+
|
973 |
+
$this->rm_folder_recursively($path);
|
974 |
+
$this->rm_folder_recursively($mobile_path);
|
975 |
+
}
|
976 |
+
}
|
977 |
+
|
978 |
public function delete_cache_of_term($term_taxonomy_id){
|
979 |
$term = get_term_by("term_taxonomy_id", $term_taxonomy_id);
|
980 |
|
1181 |
$this->options = $this->getOptions();
|
1182 |
|
1183 |
include_once('inc/preload.php');
|
1184 |
+
PreloadWPFC::create_preload_cache($this->options);
|
1185 |
}
|
1186 |
|
1187 |
public function wpfc_remote_get($url, $user_agent){
|
1590 |
return $matches[0];
|
1591 |
}
|
1592 |
|
1593 |
+
//https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_736/http://wpfc.com/stories.png
|
1594 |
+
if(preg_match("/cdn\.shortpixel\.ai\/client/i", $matches[0])){
|
1595 |
+
return $matches[0];
|
1596 |
+
}
|
1597 |
+
|
1598 |
if(preg_match("/^\/\/random/", $cdn->cdnurl) || preg_match("/\/\/i\d\.wp\.com/", $cdn->cdnurl)){
|
1599 |
if(preg_match("/^\/\/random/", $cdn->cdnurl)){
|
1600 |
$cdnurl = "//i".rand(0,3).".wp.com/".str_replace("www.", "", $_SERVER["HTTP_HOST"]);
|