Подтвердить что ты не робот

Как добавить заголовки истечения для скриптов, которые не находятся на моем сервере?

У меня есть веб-сайт, и я добавил заголовки истечения на всех страницах/изображениях и сценариях, но я не знаю, как добавить заголовки истечения во внешние скрипты.

Например, Google Analytics - у этого истечения заголовки установлены на 1 день.

Google - моя проблема, некоторые другие скрипты с внешних сайтов - настоящая проблема, у них нет конечных заголовков вообще.

4b9b3361

Ответ 1

Вы можете добавлять поля заголовков только в ответах на запросы, поступающие на ваш собственный сервер. Если запрос отправляется на другой сервер, скажем, сервер Googles, чем сервер Googles, который отвечает на запрос.

Таким образом, единственным решением вашей проблемы является размещение внешних ресурсов на вашем собственном сервере. Но это возможно только в том случае, если эти ресурсы являются статическими, не изменяются от запроса к запросу и не зависят от других вещей.

Ответ 2

Единственный способ создать script, который загружает содержимое с внешнего сайта, а затем добавляет необходимые заголовки.

<script type="text/javascript" src="http://external.example.com/foo.js"></script>

Для

<script type="text/javascript" src="external.php?url=http://external.example.com/foo.js"></script>

И external.php - это что-то вроде

<?php
header("Expire-stuff: something");
echo file_get_contents($_GET['url']);

Конечно, у этого есть дыра в области безопасности, поэтому я рекомендую использовать строки идентификаторов, такие как external.php? file = foo.js, а затем используя

$files = array('foo.js' => 'http://external/...');
if(isset($files[$_GET['file']]))
{
  echo file_get_contents($files[$_GET['file']]);
}

file_get_contents(), конечно, возьмет часть вашей полосы пропускания, поэтому было бы желательно также кэшировать результат.

Ответ 3

Это невозможно.

Не рекомендуется (и не всегда возможно): если его статический контент, предварительно выберите его с помощью script и установите собственные заголовки.

Ответ 4

Вы можете динамически загружать внешние страницы с помощью PHP, поэтому вы можете отправлять заголовки перед выводом исходных данных. Это не идеальное решение, но если вам действительно нужно, вы можете его использовать.

<?php
header('expire-header');

echo file_get_contents('http://www.extern.al/website/url');

Ответ 5

Вы не можете.

Попробуйте отправить по электронной почте одно из них, в котором размещен файл, и попытайтесь заставить их применить к нему истекающие заголовки.

Ответ 6

Для вас может быть полезно следующее.

ExpiresActive On

ExpiresDefault "access plus 1 seconds"

ExpiresByType image/x-icon "access plus 2692000 seconds"

ExpiresByType image/jpeg "access plus 2692000 seconds"

ExpiresByType image/png "access plus 2692000 seconds"

ExpiresByType image/gif "access plus 2692000 seconds"

ExpiresByType application/x-shockwave-flash "access plus 2692000 seconds"

ExpiresByType text/css "access plus 2692000 seconds"

ExpiresByType text/javascript "access plus 2692000 seconds"

ExpiresByType application/x-javascript "access plus 2692000 seconds"

ExpiresByType text/html "access plus 600 seconds"

ExpiresByType application/xhtml+xml "access plus 600 seconds"

Ответ 7

Я сделал версию этого кода, которая позволяет указать разные даты истечения срока действия для каждого скрипта:

<?php

$files = array(
    'ga.js' => 'https://ssl.google-analytics.com/ga.js',
    'bsa.js' => 'https://s3.buysellads.com/ac/bsa.js',
    'pro.js' => 'https://s3.buysellads.com/ac/pro.js'
);

if(isset($files[$_GET['file']])) {
    if ($files[$_GET['file']] == 'ga.js'){
        header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + ((60 * 60) * 48))); // 2 days for GA
    } else {
        header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + (60 * 60))); // Default set to 1 hour
    }

    echo file_get_contents($files[$_GET['file']]);
}

?>

Дополнительная информация: https://www.catswhocode.com/blog/php-how-to-add-expire-headers-for-external-scripts

Ответ 8

Возможно, вы сможете добавить параметр строки запроса, чтобы обмануть браузер, подумав, что он запрашивает другой ресурс. Например, если вы хотите, чтобы браузер никогда не кэшировал CSS, вы можете добавить знак вопроса, за которым следует случайное число до конца URL-адреса. Обычно это работает, но может быть сделано, чтобы не работать на сервере, на котором размещен файл. Попробуйте и посмотрите.