# Desenvolvimento Web

# Cross-origin resource sharing*

Cross-Origin Resource Sharing (Compartilhamento de recursos com origens diferentes) é um mecanismo que usa cabeçalhos adicionais HTTP para informar a um navegador que permita que um aplicativo Web seja executado em uma origem (domínio) com permissão para acessar recursos selecionados de um servidor em uma origem distinta.

##### Para adicionar no Apache, basta adicionar a seguinte linha no arquivo .htaccess:

```
Header set Access-Control-Allow-Origin "*"
```

#####   
Exemplo alternativo para o Apache 2.2:

```
# Permit OPTIONS, GET, POST, PUT and DELETE requests.

# Apache 2.2
<IfModule !mod_authz_core.c>
    <Limit OPTIONS GET POST PUT DELETE>
        Allow from all
    </Limit>
</IfModule>
```

##### Exemplo alternativo para o Apache 2.4:

```
# Permit OPTIONS, GET, POST, PUT and DELETE requests.

# Apache 2.4
<IfModule mod_authz_core.c>
    <Limit OPTIONS GET POST PUT DELETE>
        Require all granted
    </Limit>
</IfModule>
```

#####   
Pode também definir um cabeçalho CORS a partir de um script PHP:

```
<?php
header("Access-Control-Allow-Origin: *");
```

Nota: como em todos os usos da função de cabeçalho PHP, esse código deve ser processado antes de qualquer resultado (output) seja enviado do servidor.

Confirme que o cabeçalho do CORS está sendo definido através do seu navegador. Em alternativa pode usar o CURL:

```
curl -H "Origin: origin-example.com" --head "your-website.com"
```

Os cabeçalhos CORS são suportados em nossos planos de hospedagem web e servidores gerenciados. Em servidores não gerenciados, devem também ser suportados por padrão - dependendo do painel de controle web e do servidor web que você está usando (por exemplo, DirectAdmin ou cPanel com Apache).

#### Resolução de dificuldades

Os cabeçalhos do CORS estão normalmente relacionados com programação, especialmente se você estiver tentando integrar seu aplicativo web com uma API.  
  
Se você já confirmou que os cabeçalhos do CORS estão sendo configurados corretamente no lado do servidor e ainda está tendo dificuldades, sugerimos verificar novamente os parâmetros do CORS que estão sendo usados. Pode ser necessário usar parâmetros diferentes para trabalhar com seu código ou API.  
  
Você prefere deixar de se preocupar com a configuração do seu sistema operacional ou servidor web? Obtenha hoje um dos nossos planos de hospedagem web ou servidores gerenciados!

# Not Secure: Your connection to this site is not fully secure *

Seu navegador mostra um símbolo de aviso e exibe uma mensagem dizendo que sua conexão com este site não é totalmente segura. Você também consegue ler a seguinte descrição (em inglês):

> "Attackers might be able to see the images you're looking at on this site and trick you by modifying them."

Quando um site tem um certificado SSL válido e está carregando alguns outros conteúdos, como imagens, CSS ou arquivos JavaScript através de HTTP em vez do protocolo HTTPS, o navegador mostra o aviso de conteúdo misto.

##### **O que é conteúdo misto?**

Conteúdo misto é quando existe conteúdo seguro e não seguro (HTTPS e HTTP), sendo entregue por HTTPS ao seu navegador. Por outras palavras, alguns conteúdos carregados não estão usando o protocolo HTTPS.

##### **Como corrigir erros de conteúdo misto?**

Essencialmente, você precisa substituir qualquer conteúdo não seguro usando http:// por https://.

##### **Como consigo identificar os conteúdos não seguros?**

Consulte [este artigo.](https://how.sh/pt-br/1845-como-identificar-erros-conteudo-misto/)

# Porque minha página é lenta no GTmetrix, Pingdom, etc? *

De uma forma geral, as pontuações apresentadas no relatório GTmetrix ou outros, representam a qualidade de desenvolvimento web de sua página.

O Page Size é o tamanho de todos os recursos necessários para carregar seu site e está relacionado ao desenvolvimento web de sua página.

Os Requests são a quantidade total de recursos necessários para carregar seu site e também estão relacionados com o desenvolvimento web de sua página.

Recursos externos também podem causar lentidão na sua página, como por exemplo, publicidade, bate papo ao vivo, etc. No caso da publicidade, pode ativar a opção Adblock Plus para bloquear e verificar qual seria a pontuação do seu site sem publicidade.

O Onload Time (Load Time no Pingdom) representa o tempo que leva para carregar todos os recursos do seu site e também depende da distância entre o servidor GTmetrix e a localização do seu servidor aonde seu site está hospedado. Por este motivo, você deve selecionar sempre o servidor GTmetrix mais próximo em relação ao local onde seu site está hospedado. Por exemplo: se o seu servidor estiver hospedado nos EUA, você também deve selecionar o local dos EUA para a região do servidor no GTmetrix.

Alguns sites, por terem imensos recursos para carregar, podem obter um resultado mais positivo no Onload Time no GTmetrix após ativar a opção Stop test onload. Esta opção permite que o GTmetrix considere que o processamento da página tenha terminado, após todos os recursos (images, CSS, etc.) da página tenham terminado de baixar. Mais detalhes na página oficial (em inglês): https://gtmetrix.com/faq.html#faq-fully-loaded-vs-onload

Se as pontuações do PageSpeed e YSlow forem ruins, o Onload Time também poderá ser ruim, dependendo do tamanho total dos recursos e das solicitações para carregar sua página.

#### Questões Frequentes

##### 1. Porque motivo o Onload Time é maior após ter otimizado meu site?

Se o número de requests (pedidos) diminuíu, assim como o tamanho da página (Page Size), e o tempo de carregamento da página aumentou, poderá existir vários motivos para isso:

\- Experimente efetuar um novo teste e verificar se a página carregou em um tempo aceitável dessa vez. Por vezes, a página poderá não estar em cache e por esse motivo demorou mais tempo a carregar. Caso a situação persista, abra com o seu browser e confirme através do development tools que a página está em cache. Se a página no teste inicial não estava em cache, poderá desconsiderar este ponto.

\- Confirme se não alterou nenhuma outra opção ou instalado algum plugin no seu CMS (e.g. Wordpress) que possa ter causar lentidão na página. Se sim, reverta essas alterações e experimente novamente.

\- Verifique se a conta ou servidor (dependendo do tipo de serviço de hospedagem que tenha) não tem falta de recursos, ou não esteja a atingir algum limite. A falta de RAM ou atingir o limite do CPU, pode causar lentidão.

\- Certifique-se que usou as mesmas opções para efetuar o seu teste. Por exemplo, se mudou a localização do servidor de teste, volte a selecionar o mesmo servidor onde efetuou o teste inicial para que a comparação possa ser efetuada corretamente.

\- Por vezes, o servidor de testes poderá estar sobrecarregado com pedidos, ou a ligação de internet entre o servidor de testes e o servidor que está a hospedar seu site poderá estar mais lenta que o habitual por motivos que podem ser alheios a ambas as partes. Poderá experimentar noutra altura ou alterar a localização do servidor de testes.

\- Por fim, a causa da lentidão poderá estar relacionada com a quantidade de pedidos a serem processados nesse exato momento pelo seu servidor de hospedagem. Neste caso, aguarde algum tempo, e efetue um teste novamente em uma hora com menos tráfego para que possa efetuar uma avaliação mais adequada. Para verificar se o seu servidor está com excesso de carga, por ligar-se via SSH e consultar o Load (por exemplo, através do comando top) ou se tiver disponível, também pode verificar a página de estado do seu serviço consultando a utilização de CPU (atualizado ao minuto).

# Time to first byte (TTFB)*

O tempo até o primeiro byte (TTFB) é o tempo total gasto para receber o primeiro byte da resposta depois de solicitado.  
  
TTFB é um dos principais indicadores de desempenho do seu site e inclui o tempo que leva para o seu servidor processar seu site no nível do aplicativo (programação) e servidor.  
  
O cálculo do TTFB geralmente é baseado em vários fatores, como velocidades de transferência de rede, latência, eficiência do código do aplicativo e desempenho do servidor. Caso algum desses elementos seja lento, seu TTFB é afetado.  
  
Observe que existem várias definições de TTFB - dependendo de qual navegador ou serviço de terceiros você está usando para calculá-lo. Sugerimos consultar a documentação do seu navegador ou serviço de terceiros que você está usando para entender como o TTFB está sendo calculado.

Por exemplo, à data da criação deste artigo, no GTMetrix o TTFB é calculado através da soma do “Redirect Duration” + “Connection Duration” + “Backend Duration”.  
  
Existem várias maneiras de melhorar o TTFB:

- otimizar o código do aplicativo web (incluindo consultas e pedidos ao banco de dados)
- implementação de cache
- efetuando um upgrade ao seu plano para adicionar mais recursos (CPU e/ou RAM)

  
Observe que atualizar seu plano de serviço ou hardware de servidor poderá não funcionar se o código do seu aplicativo web for extremamente ineficiente. O TTFB também poderá ser afetado caso seu site dependa de um recurso hospedado em um servidor de terceiros.  
  
Você prefere parar de se preocupar com a otimização de seu servidor web e banco de dados enquanto se concentra em seus negócios? Obtenha um de nossos planos de hospedagem web ou servidores gerenciados hoje!

##### Fontes:

- [https://gtmetrix.com/reduce-initial-server-response-time.html](https://gtmetrix.com/reduce-initial-server-response-time.html)
- [https://moz.com/blog/improving-search-rank-by-optimizing-your-time-to-first-byte](https://moz.com/blog/improving-search-rank-by-optimizing-your-time-to-first-byte)
- [https://web.dev/time-to-first-byte/](https://web.dev/time-to-first-byte/)

# Site mostrando páginas em branco depois de editar uma variável de senha em um arquivo php *

Verifique se existem mensagens registadas no arquivo de log de erros. Erros de programação em seu site provavelmente estão causando as páginas em branco.

Na última vez em que fomos contatados por causa desse problema, sugerimos examinar os logs de erros. Posteriormente, nosso cliente conseguiu corrigir a dificuldade.

No entanto, se você ainda precisar de ajuda adicional, entre em contato conosco.