Это должно сработать для вас. Если вам нужна помощь в реализации этого, не стесняйтесь спрашивать:
Option Explicit
Sub TimesThirty()
Dim LR As Long: LR = Range("A" & Rows.Count).End(xlUp).Row
Dim BR As Long: BR = LR * Day(Application.EoMonth(Date, 1)) 'this way it will do it for the number of days of the current month
Dim arrData As Variant, ws As Worksheet, x As Integer, i As Long, h As Long
Set ws = ThisWorkbook.Sheets("Name") 'change name for the name of your sheet
With ws
x = .Cells(1, .Columns.Count).End(xlToLeft).Column 'last column on your sheet
arrData = .Range(.Cells(1, 1), .Cells(BR, x)).Value
'A loop through the array to copy the values except the Date which will go adding a day each loop
For i = 1 To LR 'for every worker
For h = 1 To Day(Application.EoMonth(Date, 1)) 'for every day of the month
For x = 1 To UBound(arrData, 2) 'for every column
If x = 1 Then 'I'm assuming the Date is on the column 1, else change the value of x
arrData(LR + h, x) = DateSerial(Year(arrData(i, x)), Month(arrData(i, x)), h) 'Year, Month, Day
Else
arrData(LR + h, x) = arrData(i, x) 'copy the same value
End If
Next x
Next h
Next i
.Range(.Cells(1, 1), .Cells(BR, x)).Value = arrData 'Paste the array back to the sheet
End With
End Sub
На страницах ySlow есть несколько соответствующих советов .
Этапы могут не хорошая идея по-видимому.
Я не знаю всего о кэшировании, но вот несколько советов:
Anon # 1,2: (статические, полудинамические элементы) Вы можете установить их, чтобы никогда не истек. Если вам нужно изменить их, измените их URL. Проверки If-Modified-Since дешевы, но не бесплатны.
Anon # 3: (динамические элементы)
Вот где ETags и / или Last-Modified очень пригодятся. В зависимости от того, что вы обслуживаете, вы можете создать хороший Last-Modified заголовок. Если в вашей базе данных хранится измененная дата всех элементов, которые вы планировали показать, вы могли бы получить эффект SELECT MAX (last_updated) FROM items_to_show
. Предостережение: Это учитывает возраст данных, а не возраст вашего шаблона, поэтому, если вы изменили свой
Шаблон Django, вы будете в недоумении, как сообщить, что в
header.
Или вы можете сделать что-то подобное с ETag. Это может быть контрольная сумма содержимого, которое генерируются. Это будет учитывать изменение шаблона.
Что следует отметить в обоих этих подходах к кешированию динамического контента: что они действительно сэкономить больше пропускной способности, чем веб загрузка сервера / базы данных. Вы всегда можете разумно использовать Expires заголовок, хотя, чтобы помочь в случаях, когда изменения на странице являются периодическими и предсказуемо.
Мои предложения по входу в систему были бы похожими, за исключением того, что я бы посмотрел на заголовок Vary. Это может сигнализировать кеширующим прокси, что разные вошедшие в систему пользователи не будут обслуживаться одним и тем же контентом.
В общем, я бы использовал ETag или Last-Modified, но не оба.
Я хотел бы предложить прочитать Масштабируемые интернет-архитектуры Есть несколько глав, посвященных расширению с помощью кэширования, CDN и т. Д. Это должно указать вам правильное направление, чтобы начать работу. Помог мне увеличить масштаб сайта, который я поддерживаю.
-
Мой лучший ответ на этот вопрос заключается в том, что у вас есть множество вариантов для всех статических файлов, которые могут дать много преимуществ по-своему, каждый из которых полезен в конкретном сценарии, поэтому взвесьте воспользуйтесь преимуществами и недостатками в соответствии с вашими конкретными потребностями.
Однако то, о чем большинство людей забывают думать, это их динамический контент, конечно, результаты кэширования db и т.п. великолепны, но все же требуют фактического запуска механизма синтаксического анализа PHP / ASP или что-то в этом роде.
Если вы посмотрите на плагин супер-кеша для wordpress, вы заметите, что он действительно может подготовить ваш html как статические файлы. Кроме того, он также создает копию gzip и использует правила перезаписи для проверки существования этих файлов в качестве подходящей альтернативы запуску анализатора. Очевидно, это даст вам лучший результат,