cache-service-worker-js

Cache con service-worker.js

file sw.js

var cacheName = 'cache-v1';

self.addEventListener('install', event => {
  event.waitUntil(
    caches.open(cacheName)
      .then(cache => cache.addAll([
          '/',
          '/wp-content/themes/*/style.css',
          '/favicon.ico'
      ]))
  );
});

self.addEventListener('message', function (event) {
  if (event.data.action === 'skipWaiting') {
    self.skipWaiting();
  }
});

self.addEventListener('fetch', function (event) {
  event.respondWith(
    caches.match(event.request)
      .then(function (response) {
        if (response) {
          return response;
        }
        return fetch(event.request);
      })
  );
});

file functions.php del tema

function add_sw_header() { ?>
<script type='text/javascript'>
if ('serviceWorker' in navigator) {
  window.addEventListener('load', function() {
    navigator.serviceWorker.register('/sw.js').then(function(registration) {
      // Registration was successful
      console.log('ServiceWorker registration successful with scope: ', registration.scope);
    }, function(err) {
      // registration failed :(
      console.log('ServiceWorker registration failed: ', err);
    });
  });
}
</script>
<?php }
add_action( 'wp_head', 'add_sw_header' );
WordPress con HTTPS e l'errore Mixed-Content

WordPress con HTTPS e l’errore Mixed-Content

L’ errore Mixed-Content si riscontra comunemente quando si verifica un problema con la configurazione HTTPS del sito web in WordPress.

Ad esempio, quando il tuo sito in WordPress è configurato con HTTPS ma le immagini, i fogli di stile ( CSS ), i file javascript ( JS ) e altri collegamenti multimediali vengono caricati con il protocollo HTTP, il browser lo vede come attività sospetta e non sicura pertanto genera un avviso di contenuto misto per ricordare al visitatore che alcuni collegamenti sul sito potrebbero essere non sicuri .

HTTPS

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
</IfModule>

CSP

<ifModule mod_headers.c>
    Header always set Content-Security-Policy "upgrade-insecure-requests;"
</IfModule>

.htaccess

<IfModule mod_rewrite.c>
# BEGIN https
    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
# END https
# BEGIN WordPress
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
# END WordPress
</IfModule>

<ifModule mod_headers.c>
# BEGIN fix Mixed-Content
    Header always set Content-Security-Policy "upgrade-insecure-requests;"
# END fix Mixed-Content 
</IfModule>
Ottimizzare e velocizzare Wordpress

Ottimizzare e velocizzare WordPress

Dopo aver visto come ottimizzare il database di wordpress il passo successivo è ottimizzare WordPress stesso.

Cache

La cache in WordPress è un fattore importante per ottimizzare e velocizzare il tuo sito web.

Attivare il plugin Cache Enabler: https://wordpress.org/plugins/cache-enabler/

Aggiungi il seguente frammento prima della sezione # BEGIN WordPress nel tuo file .htaccess

# BEGIN Cache Enabler
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    # set blog sub path
    SetEnvIf Request_URI "^(.*)$" SUB_PATH=/wp-content/cache/cache-enabler/

    # set Cache Enabler path
    SetEnvIf Request_URI "^(.*)$" CE_PATH=$1
    SetEnvIf Request_URI "^(/)index.php$" CE_PATH=$1

    <IfModule mod_mime.c>
        # gzip HTML file
        RewriteCond %{ENV:CE_PATH} /$
        RewriteCond %{ENV:CE_PATH} !^/wp-admin/.*
        RewriteCond %{REQUEST_METHOD} !=POST
        RewriteCond %{QUERY_STRING} =""
        RewriteCond %{HTTP_COOKIE} !(wp-postpass|wordpress_logged_in|comment_author)_
        RewriteCond %{HTTP:Accept-Encoding} gzip
        RewriteCond %{DOCUMENT_ROOT}%{ENV:SUB_PATH}%{HTTP_HOST}%{ENV:CE_PATH}index.html.gz -f
        RewriteRule ^(.*) %{ENV:SUB_PATH}%{HTTP_HOST}%{ENV:CE_PATH}index.html.gz [L]

        AddType text/html .gz
        AddEncoding gzip .gz
    </IfModule>

    # default HTML file
    RewriteCond %{ENV:CE_PATH} /$
    RewriteCond %{ENV:CE_PATH} !^/wp-admin/.*
    RewriteCond %{REQUEST_METHOD} !=POST
    RewriteCond %{QUERY_STRING} =""
    RewriteCond %{HTTP_COOKIE} !(wp-postpass|wordpress_logged_in|comment_author)_
    RewriteCond %{DOCUMENT_ROOT}%{ENV:SUB_PATH}%{HTTP_HOST}%{ENV:CE_PATH}index.html -f
    RewriteRule ^(.*) %{ENV:SUB_PATH}%{HTTP_HOST}%{ENV:CE_PATH}index.html [L]

    # wp override
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [END]
</IfModule>
# END Cache Enabler

Il plug-in Cache Enabler di WordPress è un plug-in di cache leggero che crea file HTML statici e li memorizza sul tuo server web.

Creare un utente amministratore su WordPress

Creare un utente amministratore su WordPress

A volte può capitare che durante il trasferimento o aggiornamento del database di WordPress i permessi dell’utente amministratore vengono corrotti.

Il metodo più veloce è quello di creare un nuovo utente con i permessi corretti sfruttando la funzione nativa di WordPress.

add_action('init', function () {
	$username = 'utente';
	$password = 'password';
	$email_address = 'utente@dominio.tld';
	if (!username_exists($username)) {
		$user_id = wp_create_user($username, $password, $email_address);
		$user = new WP_User($user_id);
		$user->set_role('administrator');
	}
} );

Può inserire tale funzione nel file functions.php del tema attivo:

/wp-content/themes/nome_tema/functions.php
Ottimizzare il database di WordPress

Ottimizzare il database di WordPress

Se utilizzi WordPress da un po di tempo, probabilmente ci sono molti dati inutili nel tuo database come revisioni, commenti spam, cestino e così via.

Questi dati aumentano le dimensioni del database di WordPress, il che significa che il backup di WordPress richiederà più spazio su disco e più tempo per suo il ripristino.

La pulizia e l’ottimizzazione riduce significativamente le dimensioni del database di WordPress, cosi di eseguire i backup più velocemente e di conseguenza un ripristino più semplice ma sopratutto il miglioramento delle prestazioni del database.

WordPress ha una funzione automatica che permette di ottimizzare il database, per abilitare è necessario modificare il file wp-config.php e inserire la seguente costante:

define('WP_ALLOW_REPAIR', true);

prima del commento:

/* That's all, stop editing! Happy blogging. */

Una volta apportata la modifica la file wp-config.php è possible eseguire l’ottimizzazione visitando il seguente link:

/wp-admin/maint/repair.php  

Disabilitare il cestino in WordPress

Quando elimini un post, una pagina o un commento, anziché eliminarlo definitivamente, esso va nel cestino. Quindi, puoi ripristinarlo più tardi se ti accorgi che è stato cancellato accidentalmente.

Per impostazione predefinita, qualsiasi cosa nel cestino di WordPress viene archiviata per 30 giorni, a meno che non la elimini manualmente. Disabilitando il cestino in WordPress puoi diminuire lo spazio occupato dal database di WordPress. Basta aggiungere la seguente riga nel tuo file wp-config.php:

define ('EMPTY_TRASH_DAYS', 0);

prima del commento:

/* That's all, stop editing! Happy blogging. */

Ora troverai il link “Elimina definitivamente” anziché “Cestino”.

Disabilitare le revisioni

Ogni volta che modifichi o aggiorni i tuoi articoli e le tue pagine, WordPress salva nel database le revisioni del contenuto pubblicato.

WordPress non limita il numero di revisioni salvate, pertanto il rischio è quello di ritrovarsi con centinaia di vecchie revisioni e con un database di dimensioni enormi.

Per disattivare le revisioni basta aggiungere la seguente costante nel tuo file wp-config.php:

define('WP_POST_REVISIONS', false);

prima del commento:

/* That's all, stop editing! Happy blogging. */

Eliminare le revisioni dei post

Le revisioni dei post occupano rapidamente tanto spazio nel database di WordPress, specialmente se sul tuo sito sono presenti autori che salvano costantemente il loro lavoro per molti giorni. Se vuoi eliminare tutte le revisioni dei post nel tuo database, puoi eseguire questa query:

DELETE a,b,c
  FROM wp_posts a
  LEFT JOIN wp_term_relationships b ON ( a.ID = b.object_id)
  LEFT JOIN wp_postmeta c ON ( a.ID = c.post_id )
  LEFT JOIN wp_term_taxonomy d ON ( b.term_taxonomy_id = d.term_taxonomy_id)
  WHERE a.post_type = 'revision'
  AND d.taxonomy != 'link_category';

InnoDB storage engine

Assicurati che le tabelle del database MySQL utilizzano il motore di archiviazione InnoDB in quanto MyISAM è obsoleto.

Esegui la seguente query sul tuo database per convertire le tabelle MyISAM in InnoDB:

SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=InnoDB;')
FROM information_schema.tables WHERE engine='MyISAM' 
AND table_schema NOT IN ('information_schema','mysql','performance_schema');

L’output generato sarà simile a questo:

ALTER TABLE db-name.table1 ENGINE=InnoDB;
ALTER TABLE db-name.table2 ENGINE=InnoDB;
ALTER TABLE db-name.table3 ENGINE=InnoDB;

Eliminare le transients

Gli sviluppatori di temi e plugin di WordPress utilizzano spesso Transients per archiviare informazioni temporanee nel tuo database.

DELETE FROM `wp_options` WHERE `option_name` LIKE ('%\_transient\_%')

Pulire la tabella wp_option permette di ottimizzare il database e la velocità del sito in quanto la maggior parte dei temi e dei plugin non rimuove le opzioni al momento della disattivazione, quindi dopo aver “provato” alcuni plugin sul tuo sito, troverai diverse centinaia di dati inutili nel database che poi sono caricati automaticamente in memoria su ogni richiesta.